El While va pasando los nodos a variables y las voy imprimiendo en cada vuelta.
Código HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?> <principal> <nodoloop> <nodo1>loop1 nodo1</nodo1> <nodo2>loop1 nodo2</nodo2> </nodoloop> <nodoloop> <nodo1>loop2 nodo1</nodo1> <nodo2>loop2 nodo2</nodo2> </nodoloop> </principal>
Código PHP:
$reader = new XMLReader();
$reader->open($ruta_archivo);
if(!$reader->isValid()){
while ($reader->read()) {
switch ($reader->nodeType) {
case (XMLReader::ELEMENT):
if ($reader->localName == "loop") {
$node = $reader->expand();
$dom = new DomDocument();
$n = $dom->importNode($node,true);
$dom->appendChild($n);
$simple_xml = simplexml_import_dom($n);
$nodo1 = $simple_xml->nodo1;
$nodo2 = $simple_xml->nodo2;
echo $nodo1 . " " . $nodo2;
}
}
}
}
$reader->close;
Pero tengo un problema para leer este que tiene un nodo en un nivel mas bajo y necesito tener cargadas las variables tal cual explico mas abajo....
Código HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?> <principal> <loop> <nodo0>loop1 nodo0</nodo0> <interior> <nodo1>loop1 interior1 nodo1</nodo1> <nodo2>loop1 interior1 nodo2</nodo2> <interior> <interior> <nodo1>loop1 interior2 nodo1</nodo1> <nodo2>loop1 interior2 nodo2</nodo2> <interior> <interior> <nodo1>loop1 interior3 nodo1</nodo1> <nodo2>loop1 interior3 nodo2</nodo2> <interior> </loop> <loop> <nodo0>loop2 nodo0</nodo0> <interior> <nodo1>loop2 interior1 nodo1</nodo1> <nodo2>loop2 interior1 nodo2</nodo2> <interior> <interior> <nodo1>loop2 interior2 nodo1</nodo1> <nodo2>loop2 interior2 nodo2</nodo2> <interior> <interior> <nodo1>loop2 interior3 nodo1</nodo1> <nodo2>loop2 interior3 nodo2</nodo2> <interior> </loop> </principal>
Código PHP:
//el codigo seria casi igual
$reader = new XMLReader();
$reader->open($ruta_archivo);
if(!$reader->isValid()){
while ($reader->read()) {
switch ($reader->nodeType) {
case (XMLReader::ELEMENT):
if ($reader->localName == "loop") {
$node = $reader->expand();
$dom = new DomDocument();
$n = $dom->importNode($node,true);
$dom->appendChild($n);
$simple_xml = simplexml_import_dom($n);
//leo el nodo0 que esta fuera del siguiente while
$nodo0 = $simple_xml->nodo0;
//..... aca como que tendría que hacer otro while del nodo interior
//y obtener los valores,
// $interiror1nodo1, $interiror1nodo2, $interiror2nodo1, etc
// y cargarlas en una variable dinámica,
//me imagino que trabajando con el nodo loop que tengo en $n lo puedo hacer
//pero no me sale, necesito luego de cada pasada de loop
//tener las variables para trabajarlas asi....
echo $nodo0 . " " . $interiror1nodo1 . " " . $interiror1nodo2 . " " . $interiror2nodo1.......;
}
}
}
}
$reader->close;
Como dato adjunto utilizo el XMLReader porque el xml es muy grande y por lo que leí por ahí hacerlo de esta forma consume menos recursos.
Muchas gracias a quien me ayude con esto....