2012-04-12 11 views
3

Ich habe dieses simplexml-Skript, das ich verwende, um Daten aus einem Formular einzugeben.Verschönern/Formatieren der Ausgabe in SimpleXML

$xml = simplexml_load_file("links.xml"); 

$sxe = new SimpleXMLElement($xml->asXML()); 

$person = $sxe->addChild("link"); 
$person->addChild("title", "Q: ".$x_title); 
$person->addChild("url", "questions_layout.php#Question$id"); 

$sxe->asXML("links.xml"); 

und wenn es herauskommt sieht es aus wie diese auf einer Linie:

<link><title>Alabama State</title><url>questions_layout.php#Question37</url></link><link><title>Michigan State</title><url>questions_layout.php#Question37</url></link></pages> 

Aber ich die Methode gefunden habe versucht HERE und THIS AS WELL aber weder Format der XML korrekt in den Leitungen, wie sie sollten sein wie

<link> 
<title></title> 
<url></url> 
</link> 

In der ersten Referenz Link ich sogar loadXML-load geändert, weil loadXML erwartet eine Zeichenfolge als XML. Kann mir bitte jemand helfen, eine Lösung zu finden?

+0

Mögliche Duplikat [PHP SimpleXML, wie das retten Datei in einer formatierten Weise?] (http://stackoverflow.com/questions/798967/php-simplexml-how-to-save-the-file-in-a-formatted-way) – cweiske

Antwort

8

AFAIK simpleXML kann es nicht alleine machen.

Allerdings kann DOMDocument.

+0

Ich versuchte Ihre Antwort und ich erhielt a 'Fataler Fehler: Aufruf von undefinierter Methode DOMElement :: saveXML()' in der Zeile, in der '$ formatiert = $ dom-> saveXML(); passiert – Tower

+0

@Tower Versuchen Sie 'saveXML()' auf 'ownerDocument' zu nennen. – alex

+2

Es wurde in '$ dom = dom_import_simplexml ($ sxe) -> ownerDocument geändert;' und obwohl der Fehler nicht mehr gedruckt wird, wird das XML immer noch nicht formatiert und erscheint in einer einzigen Zeile. – Tower

2

ich denke, oben akzeptiert Antwort von stackoverflow Autorität hat nicht über Frage gelöst. Ref: [versuchte ich Ihre Antwort, und ich erhielt eine Fatal error: Call to undefined Methode DOMElement :: saveXML() auf der Linie, wo das $formatted = $dom->saveXML();

$simplexml = simplexml_load_file("links.xml"); 
$dom = new DOMDocument('1.0'); 
$dom->preserveWhiteSpace = false; 
$dom->formatOutput = true; 
$dom->loadXML($simplexml->asXML()); 
$xml = new SimpleXMLElement($dom->saveXML()); 

$person = $xml->addChild("link"); 
$person->addChild("title", "Q: ".$x_title); 
$person->addChild("url", "questions_layout.php#Question$id"); 
$xml->saveXML("links.xml"); 

+1

Funktioniert perfekt! –