2010-08-07 8 views
0

j'ai donc cette structure XML:XML Parsing dans un tableau

<fields> 
    <field name="agent_description" label="Agent Description" size="area" /> 
    <field name="agent_phone" label="Agent Phone" size="field" /> 
    <field name="agent_email" label="Agent EMail" size="field" /> 
    <field name="agent_listing_url" label="Agent Listing" size="field" /> 
    <field name="profile_video_title" label="Profile Video Title" size="field" /> 
    <field name="profile_video_sub_title" label="Profile Video Sub Title" size="field" /> 
    <field name="profile_video_url" label="Profile Video (YouTube)" size="field" /> 

</fields> 

je voudrais analyser cela en une structure de tableau qui ressemble à ceci:

array(
      array("name" => "agent_description", 
       "label" => "Agent Description", 
       "size" => "area"), 

      array("name" => "agent_phone", 
       "label" => "Agent Phone", 
       "size" => "field"), 

      array("name" => "agent_email", 
       "label" => "Agent EMail", 
       "size" => "field"), 

      array("name" => "agent_listing_url", 
       "label" => "Agent Listing", 
       "size" => "field"), 

      array("name" => "profile_video_title", 
       "label" => "Profile Video Title", 
       "size" => "field"), 

      array("name" => "profile_video_sub_title", 
       "label" => "Profile Video Sub Title", 
       "size" => "field"), 

      array("name" => "profile_video_url", 
       "label" => "Profile Video (YouTube)", 
       "size" => "field"), 
) 

ce qui est la meilleure façon d'y parvenir ?

Répondre

4
$xml = simplexml_load_string($xml); 
$fields = array(); 
foreach ($xml->field as $f) { 
    $f = (array) $f->attributes(); 
    $fields[] = $f['@attributes']; 
} 
+1

Tous les serveurs ont SimpleXML activé. – Alexander

+0

fonctionne très bien, merci. –

2
$dom = new DOMDocument; 
$dom->loadXML($xml); 
$fields = $dom->getElementsByTagName('field'); 
$arr = array(); 
foreach ($fields as $field) { 
    $arr[] = array(
    'name' => $field->getAttribute('name'), 
    'label' => $field->getAttribute('label'); 
    'size' => $field->getAttribute('size'), 
); 
}