2010-12-21 11 views
1

Ich habe eine Webseite, die einen XML-Code aus einem vorhandenen XML erstellt, das Änderungen anwendet. Ich möchte die neue XML-Datei in einer textarea als Vorschau ausgeben. Es zeigt alle Knoten, die im ursprünglichen XML vorhanden waren, mit den richtigen Leerstellen/Formatierungen (Einzüge und Zeilenumbrüche) an, die das ursprüngliche XML-Dokument gerade hatte, aber alle neuen Knoten werden in einer Zeile ohne Einzüge angezeigt. Beispiel:Wie kann ich XML mit Whitespace-Formatierung anzeigen?

<original parent node> 
    <original child>value</original child> 
</original parent node> 
<original parent node> 
    <new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child> 
</original parent node> 

Hier ist der Code, schreibt und liest wieder im XML:

$dom = new DOMDocument('1.0'); 
$dom->preserveWhiteSpace = true; 
$dom->formatOutput = true; 
$dom->loadXML($xml->asXML()); 
file_put_contents($file, $dom->saveXML()); 
echo "<textarea cols='100' rows='40'>".file_get_contents($file)."</textarea>"; 

ich auch bin SimpleXML mit dem XMLS zu manipulieren. Wie kann ich den richtigen Whitespace für die neuen Knoten anzeigen lassen?

+0

Wow. loadXML/asXML, file_put_contents/file_get_contents ... Wofür soll das gut sein? Related: Was ist '$ xml'? – Tomalak

Antwort

4

Ich habe festgestellt, dass formatOutput funktioniert nur, wenn preserveWhiteSpace deaktiviert ist:

$dom = new DOMDocument; 
$dom->preserveWhiteSpace = false; 
$dom->formatOutput = true; 
$dom->loadXML($xml); 
echo $dom->saveXML(); 
+0

Danke, das hat super funktioniert! – jreed121

+0

Jungs Ich bin in der 4. Zeile stecken, da es mir einen Fehler gibt: Hinweis: Undefinierte Variable: XML in C: \ Wamp \ www \ 3ace \ index.php in Zeile 88 –

0

Versuchen:

echo "<textarea cols='100' rows='40'>".htmlspecialchars($xml->asXML())."</textarea>"; 
1

diese hinzufügen, es funktioniert für mich.

echo '<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>'; 
echo "<br/> <pre class=\"prettyprint\" >". htmlentities($dom->saveXML($dom->firstChild->firstChild->firstChild))."</pre>"; 

Sie können $dom->firstChild->firstChild->firstChild für weitere Informationen löschen.

Verwandte Themen