¿Cómo puedo analizar XML para obtener múltiples bloques de texto con SimpleXML?
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?
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