¿Cuál es la mejor función php DOM 2 Array?
Quiero analizar archivos XML, la mejor manera que encontré es usar la clase DOMDocument () hasta ahora.
cadena xml de muestra:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<response>
<resData>
<contact:infData xmlns:contact="http://example.com/contact-1.0">
<contact:status s="value1"/>
<contact:status s="value2"/>
<contact:status s="value3"/>
<contact:status s="value4"/>
</contact:infData>
</resData>
</response>
Uso la función dom2array (bramido) para analizar dom, pero solo devuelve 1 elemento (solo valor4)
<?php
function dom2array($node) {
$res = array();
if($node->nodeType == XML_TEXT_NODE){
$res = $node->nodeValue;
}else{
if($node->hasAttributes()){
$attributes = $node->attributes;
if(!is_null($attributes)){
$res['@attributes'] = array();
foreach ($attributes as $index=>$attr) {
$res['@attributes'][$attr->name] = $attr->value;
}
}
}
if($node->hasChildNodes()){
$children = $node->childNodes;
for($i=0;$i<$children->length;$i++){
$child = $children->item($i);
$res[$child->nodeName] = dom2array($child);
}
}
}
return $res;
}
?>
¿Hay alguna forma de analizar todos los elementos xml y enviarlos a una matriz?
matriz de salida:
Array
(
[response] => Array
(
[#text] =>
[resData] => Array
(
[#text] =>
[contact:infData] => Array
(
[#text] =>
[contact:status] => Array
(
[@attributes] => Array
(
[s] => value4
)
)
)
)
)
)
¿Dónde está value1, value2, value3? :( Gracias