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();