Pregunta

Quiero analizar algunos XML que se ve así:

<node>
  This is
  <child>
    blah
  </child>
  some
  <child>
    foo
  </child>
  text
</node>

¿Cómo obtengo acceso a los hijos del nodo de texto en XML simple?

¿Puedo acceder a ellos en el orden correcto de texto y elementos secundarios?

¿Necesito algún otro paquete para esto?

¿Fue útil?

Solución

Recomiendo encarecidamente cambiar a las funciones DOM sobre SimpleXML. Tuve una respuesta como esta hace un tiempo que no era t muy popular , pero aún lo mantengo. Las funciones DOM son mucho más poderosas: la verbosidad adicional lo vale.

$doc = new DOMDocument();
$doc->loadXML($xmlString);

foreach ($doc->documentElement->childNodes as $node) {
    if ($node->nodeType === XML_TEXT_NODE) {
        echo $node->nodeValue . "\n";
    }
}

Otros consejos

foreach($this->xml->xpath('/node/child') as $child){
   ...
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top