working simplexmlelement simplexml_load_file not new error ejemplo array php formatting simplexml

simplexmlelement - PHP simpleXML ¿cómo guardar el archivo de forma formateada?



simplexmlelement() (4)

Como Gumbo y Witman respondieron; cargando y guardando un documento XML de un archivo existente (somos muchos novatos por aquí) con DOMDocument :: load y DOMDocument :: save .

<?php $xmlFile = ''filename.xml''; if( !file_exists($xmlFile) ) die(''Missing file: '' . $xmlFile); else { $dom = new DOMDocument(''1.0''); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dl = @$dom->load($xmlFile); // remove error control operator (@) to print any error message generated while loading. if ( !$dl ) die(''Error while parsing the document: '' . $xmlFile); echo $dom->save($xmlFile); } ?>

Estoy tratando de agregar algunos datos a un archivo XML existente utilizando SimpleXML de PHP. El problema es que agrega todos los datos en una sola línea:

<name>blah</name><class>blah</class><area>blah</area> ...

Y así. Todo en una sola línea. ¿Cómo introducir saltos de línea?

¿Cómo lo hago así?

<name>blah</name> <class>blah</class> <area>blah</area>

Estoy usando la función asXML() .

Gracias.


La solución de Gumbo hace el truco. Puedes trabajar con simpleXml arriba y luego agregar esto al final para eco y / o guardarlo con el formateo.

El siguiente código lo eclipsa y lo guarda en un archivo (vea los comentarios en el código y elimine lo que no quiera):

//Format XML to save indented tree rather than one line $dom = new DOMDocument(''1.0''); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($simpleXml->asXML()); //Echo XML - remove this and following line if echo not desired echo $dom->saveXML(); //Save XML to file - remove this and following line if save not desired $dom->save(''fileName.xml'');


Puede usar la clase DOMDocument para reformatear su código:

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


Use dom_import_simplexml para convertir a DomElement. Luego use su capacidad para formatear la salida.

$dom = dom_import_simplexml($simple_xml)->ownerDocument; $dom->preserveWhiteSpace = false; $dom->formatOutput = true; echo $dom->saveXML();