转换XML字符串($buffer)到一个简化的数组中,忽略属性并对具有相同名称的子元素进行分组: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);
结果:Array(
[aaaa] => Array
(
[bbb] => Array
(
[cccc] => Array
(
[dddd] =>
[eeee] =>
)
)
))
如果您还想拥有这些属性,则可以通过SimpleXMLElement的JSON编码/解码获得这些属性。这通常是最简单的快速“n”脏解决方案:$xml = simplexml_load_string($buffer);$array = json_decode(json_encode((array) $xml), true);$array = array($xml->getName() => $array);
结果: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
)
)
)
)
))
请注意,所有这些方法只在XML文档的命名空间中工作。