simplexmlelement recorrer print new how example convert php xml formatting simplexml

php - recorrer - Formato de salida de $ SimpleXML-> asXML();



simplexmlelement php (3)

Encontré una solución similar ... para formatear datos xlm sin procesar ... a partir de mis solicitudes php SOAP __getLastRequest & __getLastResponse , para depurar rápidamente los xml''s que he combinado con google-code-prettify .

Es una buena solución si desea formatear datos XML confidenciales y no desea hacerlo en línea.

Algunos ejemplos de códigos a continuación pueden ser útiles para otros:

$dom = new DOMDocument; $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($data); //=====$data has the raw xml data...you want to format echo ''<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>''; echo "<br/> <pre class=/"prettyprint/" >". htmlentities($dom->saveXML())."</pre>";

A continuación se muestra una muestra de la salida XML formateada que obtuve:

Nota: El formato de XML está disponible en $dom->saveXML() y se puede guardar directamente en un archivo xml usando php file write.

Esta pregunta ya tiene una respuesta aquí:

El título lo dice todo.

Si tengo algo así como (de ejemplos de sitios PHP):

$xmlstr = <<<XML <?xml version=''1.0'' standalone=''yes''?> <movies></movies> XML; $sxe = new SimpleXMLElement($xmlstr); $sxe->addAttribute(''type'', ''documentary''); $movie = $sxe->addChild(''movie''); $movie->addChild(''title'', ''PHP2: More Parser Stories''); $movie->addChild(''plot'', ''This is all about the people who make it work.''); $characters = $movie->addChild(''characters''); $character = $characters->addChild(''character''); $character->addChild(''name'', ''Mr. Parser''); $character->addChild(''actor'', ''John Doe''); $rating = $movie->addChild(''rating'', ''5''); $rating->addAttribute(''type'', ''stars''); echo("<pre>".htmlspecialchars($sxe->asXML())."</pre>"); die();

Termino generando una cadena larga como esta:

<?xml version="1.0" standalone="yes"?> <movies type="documentary"><movie><title>PHP2: More Parser Stories</title><plot>This is all about the people who make it work.</plot><characters><character><name>Mr. Parser</name><actor>John Doe</actor></character></characters><rating type="stars">5</rating></movie></movies>

Esto está bien para un consumidor de programas, pero para tareas de depuración / tareas humanas, ¿alguien sabe cómo obtener esto en un buen formato sangrado?


Hay una variedad de soluciones en los comentarios en la página del manual de PHP para SimpleXMLElement . No muy eficiente, pero ciertamente escueto, es una solución de Anonymous

$dom = dom_import_simplexml($simpleXml)->ownerDocument; $dom->formatOutput = true; echo $dom->saveXML();

Los comentarios de la página del manual de PHP a menudo son buenas fuentes para las necesidades comunes, siempre y cuando primero filtre las cosas que están totalmente equivocadas.


Lo anterior no funcionó para mí, encontré esto funcionó:

$dom = new DOMDocument("1.0"); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($simpleXml->asXML()); echo $dom->saveXML();