
Benutzer61734
Ich versuche, mit SimpleXML von PHP einige Daten zu einer vorhandenen XML-Datei hinzuzufügen. Das Problem ist, dass alle Daten in einer einzigen Zeile hinzugefügt werden:
<name>blah</name><class>blah</class><area>blah</area> ...
Und so weiter. Alles in einer Zeile. Wie fügt man Zeilenumbrüche ein?
Wie mache ich das so?
<name>blah</name>
<class>blah</class>
<area>blah</area>
ich benutze asXML()
Funktion.
Danke.
Du könntest die verwenden DOMDocument-Klasse Um Ihren Code neu zu formatieren:
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
echo $dom->saveXML();

Wittmann
Gumbos Lösung macht es möglich. Sie können oben mit simpleXml arbeiten und dies dann am Ende zu Echo hinzufügen und / oder mit Formatierung speichern.
Der folgende Code wiederholt es und speichert es in einer Datei (siehe Kommentare im Code und entfernen, was Sie nicht wollen):
//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');

troelskn
Verwenden dom_import_simplexml
in ein DomElement konvertieren. Verwenden Sie dann seine Kapazität, um die Ausgabe zu formatieren.
$dom = dom_import_simplexml($simple_xml)->ownerDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
echo $dom->saveXML();

quantme
Als Gumbo und Witman antworteten; Laden und Speichern eines XML-Dokuments aus einer bestehenden Datei (wir sind hier viele Neulinge) mit DOMDocument::laden und DOMDocument::speichern.
<?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);
}
?>
9630700cookie-checkPHP simpleXML wie speichert man die Datei formatiert?yes
Es gibt auch die BIRNE XML_Beautifier Paket.
– karim79
28. April 2009 um 17:22 Uhr
Ich weiß, das ist eine ziemlich alte Frage und Sie müssen eine Lösung gefunden haben. Kann für andere nützlich sein, schau es dir an github.com/spatie/array-to-xml
– Vaibhav Malushte
19. November 2020 um 15:16 Uhr