simplexml_load_string recorrer nodos ejemplos ejemplo con cargar php xml

recorrer - ¿Qué analizador XML usas para PHP?



recorrer nodos xml php (5)

Me gusta la clase XMLReader por su simplicidad y velocidad. Pero me gustan las funciones asociadas xml_parse, ya que permite una mejor recuperación de errores. Sería bueno si la clase XMLReader arrojara excepciones para cosas como refs de entidades no válidas en lugar de simplemente emitir una advertencia.


Evitaría SimpleXML si puedes. Aunque parece muy tentador evitar un montón de código "feo", es justo lo que su nombre sugiere: simple. Por ejemplo, no puede manejar esto:

<p> Here is <strong>a very simple</strong> XML document. </p>

Muerde la bala y ve a las funciones DOM. Su poder supera con creces la pequeña complejidad adicional. Si está familiarizado con la manipulación de DOM en Javascript, se sentirá como en casa con esta biblioteca.


Hay al menos cuatro opciones cuando se usa PHP5 para analizar archivos XML. La mejor opción depende de la complejidad y el tamaño del archivo XML.

Hay una muy buena serie de artículos en 3 partes titulada '' XML for PHP developers '' en IBM developerWorks.

"Analizar con el DOM, ahora totalmente compatible con el estándar W3C, es una opción familiar, y es su elección para documentos complejos pero relativamente pequeños. SimpleXML es el camino a seguir para documentos XML básicos y no demasiado grandes, y XMLReader, más fácil y más rápido que SAX, es el analizador de flujo de elección para documentos grandes ".



SimpleXML y DOM funcionan perfectamente juntos, por lo que puede usar el mismo XML que interactúa con él como SimpleXML o DOM.

Por ejemplo:

$simplexml = simplexml_load_string("<xml></xml>"); $simplexml->simple = "it is simple."; $domxml = dom_import_simplexml($simplexml); $node = $domxml->ownerDocument->createElement("dom", "yes, with DOM too."); $domxml->ownerDocument->firstChild->appendChild($node); echo (string)$simplexml->dom;

Obtendrás el resultado:

"yes, with DOM too."

Porque cuando importas el objeto (ya sea en simplexml o dom) usa el mismo objeto PHP subrayado por referencia.

Me di cuenta de esto cuando estaba tratando de corregir algunos de los errores en SimpleXML extendiendo / envolviendo el objeto.

Consulte http://code.google.com/p/blibrary/source/browse/trunk/classes/bXml.class.inc para ver ejemplos.

Esto es realmente bueno para pequeños fragmentos de XML (-2MB), ya que DOM / SimpleXML extrae el documento completo en la memoria con cierta sobrecarga adicional (piense x2 o x3). Para fragmentos grandes de XML (+2 MB), querrá usar XMLReader / XMLWriter para analizar el estilo SAX, con poca sobrecarga de memoria. He usado documentos de 14MB + con éxito con XMLReader / XMLWriter.


SimpleXML parece hacer un buen trabajo para mí.