Итак, у меня есть эта структура XML:
<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>
я хотел бы проанализировать это в структуре массива, которая выглядит так:
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"), )
Каков наилучший способ добиться этого?
$xml = simplexml_load_string($xml); $fields = array(); foreach ($xml->field as $f) { $f = (array) $f->attributes(); $fields[] = $f['@attributes']; }
$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'), ); }