Einzug mit DOMDocument in PHP
Ich bin mit DOMDocument
zum erzeugen eines neuen XML-Datei, und ich möchte für die Ausgabe der Datei werden eingerückt schön, so dass es leicht zu Folgen für einen menschlichen Leser.
Zum Beispiel, wenn DOMDocument
gibt diese Daten:
<?xml version="1.0"?>
<this attr="that"><foo>lkjalksjdlakjdlkasd</foo><foo>lkjlkasjlkajklajslk</foo></this>
Ich soll die XML Datei sein:
<?xml version="1.0"?>
<this attr="that">
<foo>lkjalksjdlakjdlkasd</foo>
<foo>lkjlkasjlkajklajslk</foo>
</this>
Ich habe lange gesucht um Antworten zu suchen, und alles, was, die ich gefunden habe, scheint zu sagen, um zu versuchen, um die Kontrolle der weißen Raum auf diese Weise:
$foo = new DOMDocument();
$foo->preserveWhiteSpace = false;
$foo->formatOutput = true;
Aber dieses scheint nicht, etwas zu tun. Vielleicht funktioniert dies nur beim Lesen der XML? Halten Sie im Verstand ich bin versucht, zu schreiben, neue Dokumente.
Gibt es etwas, das in DOMDocument
zu tun? Oder eine Funktion, kann dies problemlos?
InformationsquelleAutor der Frage Josh Leitzel | 2009-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
DomDocument wird den trick tun, ich persönlich verbrachte ein paar Stunden Googeln und zu versuchen, dies herauszufinden, und ich bemerkte, dass, wenn Sie
In Ordnung, Es funktioniert einfach nicht, aber, wenn Sie denselben code verwenden, aber in dieser Reihenfolge:
Funktioniert wie ein Charme, ich hoffe, das hilft
InformationsquelleAutor der Antwort Angel
Nach etwas Hilfe von John und spielen, um mit dieser auf meinem eigenen, es scheint, dass auch DOMDocument inhärente Unterstützung für die Formatierung hat nicht meinen Anforderungen entsprechen. Also entschied ich mich zu schreiben, meine eigenen Einrückung Funktion.
Dies ist eine ziemlich grobe Funktion, dass ich nur warf schnell zusammen, also wenn jemand irgendwelche Tipps zur Optimierung oder nichts zu sagen im Allgemeinen, ich würde mich freuen es zu hören!
InformationsquelleAutor der Antwort Josh Leitzel
Habe ich ausprobiert, läuft der code unter Einstellung
formatOutput
undpreserveWhiteSpace
in unterschiedlicher Weise, und das einzige Mitglied, dass hat keine Auswirkungen auf die AusgabeformatOutput
. Können Sie führen Sie das Skript und sehen, ob es funktioniert?InformationsquelleAutor der Antwort John Rasch
Welche Methode Sie aufrufen, beim Druck der xml?
Benutze ich dieses:
(...)
Funktioniert es perfekt, aber druckt nur das element, so müssen Sie drucken die
<?xml ... ?>
Teil manuell..InformationsquelleAutor der Antwort Jindra
Meisten Antworten in diesem Thema Umgang mit xml-text, der flow.
Hier ist ein weiterer Ansatz ist die Verwendung des dom-Funktionalitäten zum ausführen der Einzug job.
Die loadXML () - dom-Methode importiert Einzug Zeichen in der xml-Quelle als text-Knoten. Die Idee ist, entfernen Sie diesen text-Knoten aus dem dom und dann wieder korrekt formatiert sind (siehe Kommentare im code unten für mehr details).
Den xmlIndent () - Funktion ist implementiert als eine Methode der indentDomDocument Klasse, die geerbt von domDocument.
Unten ist ein komplettes Beispiel, wie es zu benutzen :
InformationsquelleAutor der Antwort
Yo peeps,
gerade herausgefunden, dass offenbar eine root-XML-Elements enthalten nicht-text-Kinder. Dies ist nonintuitive ein. f. Aber offenbar ist dies der Grund, dass, zum Beispiel,
nicht Einrücken.
https://bugs.php.net/bug.php?id=54972
So dass Sie gehen, h. t. h. et c.
InformationsquelleAutor der Antwort blaaaaaaaaaaa
Wenn Sie eine andere Dateierweiterung als
.xml
dann legen Sie zunächst die header -Content-Type
header auf den richtigen Wert.InformationsquelleAutor der Antwort