Php simplexml nueva línea
-
12-09-2019 - |
Pregunta
He creado un archivo XML usando el XML simple de PHP, guardé el archivo. Al abrir el archivo en PHP usando Fopen e imprimir el contenido. Mi XML se ve así: (ver más abajo)
<?xml version="1.0" encoding="UTF-8"?>
<home><orderList><delivery_cost>0.00</delivery_cost><delivery_surname>TEST</delivery_surname><delivery_postcode>1234</delivery_postcode><status>1</status></orderList></home>
Quiero que el archivo XML se vea todo sangrado y en nuevas líneas para cada elemento. ¿Alguien sabe cómo hacer esto?
Gracias
Solución
Puedes hacer esto usando el formatOutput
propiedad de DOMDocument
.
Guardar su XML así, suponiendo que su XML esté en una variable llamada $yourXML
, y desea guardarlo en un archivo en $xmlFilePath
:
$dom = new DOMDocument();
$dom->loadXML($yourXML);
$dom->formatOutput = true;
$formattedXML = $dom->saveXML();
$fp = fopen($xmlFilePath,'w+');
fwrite($fp, $formattedXML);
fclose($fp);
Código adaptado de aquí.
Otros consejos
Esto se llama "Pretty Printing" y SimplexML no hace eso. Si busca en Stack Overflow y en otros lugares en la web, encontrará soluciones personalizadas que lo hagan.
La impresión bonita es buena para la visulación, pero No recomiendo guardar documentos en ese formato.
Si todavía estás buscando una impresora bonita, puedes intentarlo Simplificar's asprettyxml ()
include 'SimpleDOM.php';
$home = simpledom_load_string('<?xml version="1.0" encoding="UTF-8"?>
<home><orderList><delivery_cost>0.00</delivery_cost><delivery_surname>TEST</delivery_surname><delivery_postcode>1234</delivery_postcode><status>1</status></orderList></home>');
echo $home->asPrettyXML();
echo " n"; Para una nueva línea en XML
ob_start (); eco ' ' . " n" ;?>