How to convert XML into array in PHP?
Another option is the SimpleXML extension (I believe it comes standard with most php installs.)
http://php.net/manual/en/book.simplexml.php
The syntax looks something like this for your example
$xml = new SimpleXMLElement($xmlString);echo $xml->bbb->cccc->dddd['Id'];echo $xml->bbb->cccc->eeee['name'];// or...........foreach ($xml->bbb->cccc as $element) { foreach($element as $key => $val) { echo "{$key}: {$val}"; }}
Converting an XML string ($buffer
) into a simplified array ignoring attributes and grouping child-elements with the same names:
function XML2Array(SimpleXMLElement $parent){ $array = array(); foreach ($parent as $name => $element) { ($node = & $array[$name]) && (1 === count($node) ? $node = array($node) : 1) && $node = & $node[]; $node = $element->count() ? XML2Array($element) : trim($element); } return $array;}$xml = simplexml_load_string($buffer);$array = XML2Array($xml);$array = array($xml->getName() => $array);
Result:
Array( [aaaa] => Array ( [bbb] => Array ( [cccc] => Array ( [dddd] => [eeee] => ) ) ))
If you also want to have the attributes, they are available via JSON encoding/decoding of SimpleXMLElement. This is often the most easy quick'n'dirty solution:
$xml = simplexml_load_string($buffer);$array = json_decode(json_encode((array) $xml), true);$array = array($xml->getName() => $array);
Result:
Array( [aaaa] => Array ( [@attributes] => Array ( [Version] => 1.0 ) [bbb] => Array ( [cccc] => Array ( [dddd] => Array ( [@attributes] => Array ( [Id] => id:pass ) ) [eeee] => Array ( [@attributes] => Array ( [name] => hearaman [age] => 24 ) ) ) ) ))
Take note that all these methods only work in the namespace of the XML document.