2009-12-03 20 views
5

Ich habe eine XML-Datei mit dem einfachen PHP-XML erstellt, gespeichert die Datei. Beim Öffnen der Datei in PHP mit fopen und Drucken der Inhalte. meine XML sieht wie folgt aus: (siehe unten)PHP SimpleXML neue Zeile

<?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> 

ich die XML-Datei möge alle gegliederten und auf neue Linien für jedes Element suchen. Weiß jemand, wie man das macht?

Dank

+0

Wie speichern Sie die XML-Datei? –

Antwort

10

Sie können dies die formatOutput Eigenschaft DOMDocument mit tun.

Speichern Sie Ihre XML wie dies stattdessen ist der XML-Annahme in einer Variablen namens $yourXML, und Sie wollen es in eine Datei auf $xmlFilePath speichern:

$dom = new DOMDocument(); 
$dom->loadXML($yourXML); 
$dom->formatOutput = true; 
$formattedXML = $dom->saveXML(); 

$fp = fopen($xmlFilePath,'w+'); 
fwrite($fp, $formattedXML); 
fclose($fp); 

-Code von here angepasst.

+0

Oh schön! Ich hatte keine Ahnung DOMDocument konnte dies tun ... – ChronoFish

+0

Sie können auch die DOM-Repräsentation von Ihrem SimpleXML-Objekt in ein DOMElement/DOMDocument-Objekt importieren und dann die formatOutput-Eigenschaft für das DOMDocument-Objekt festlegen. Auf diese Weise müssen Sie die XML-Zeichenfolge nicht erneut analysieren. siehe und VolkerK

+1

Das Problem mit 'formatOutput' ist Es funktioniert nur, wenn Sie keine Textknoten haben. IOW, wenn es nur einen Zeilenumbruch zwischen zwei Knoten gibt, wird nicht versucht, die Ausgabe zu verschönern. –

2

Dies wird als "hübsches Drucken" bezeichnet und SimpleXML tut das nicht. Wenn Sie auf Stack Overflow und anderswo im Internet suchen, finden Sie benutzerdefinierte Lösungen, die das tun.

Ziemlich Druck ist gut für die Visulation, aber Ich empfehle nicht, Dokumente in diesem Format zu speichern.

Wenn Sie immer noch für einen hübschen-Drucker suchen, können Sie versuchen, SimpleDOM ‚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(); 
-3

echo "\ n"; für neue Zeile in xml

ob_start(); Echo ' '. "\ n";?>