2017-02-06 4 views
0

Ich möchte ein XLM-Dokument mit dem Microsoft/XMLDOM-Objekt ändern. Die Ausgabe sollte jedes Element in einer neuen Zeile platzieren und die Einzugsebene sollte der Verschachtelungsebene entsprechen. Ich habe versucht, dies mit einem Skript wie folgt:Erstellen von XML mit Einzug

var objXML = new ActiveXObject("Microsoft.XMLDOM"); 
objXML.load("in.xml") 
var CRLF = objXML.createTextNode("\n"); 
var root = objXML.documentElement; 

var node = objXML.createNode(1, "A", root.namespaceURI); 
var text = objXML.createTextNode("foo"); 
node.appendChild(text); 
root.appendChild(node); 
root.appendChild(CRLF); // creates NOT a newline after <A>foo</A> 

node = objXML.createNode(1, "B", root.namespaceURI); 
text = objXML.createTextNode("bar"); 
node.appendChild(text); 
root.appendChild(node); 
root.appendChild(CRLF); // creates a newline after <B>bar</B> 

objXML.save("out.xml"); 

Mit dieser Eingabedatei "in.xml"

<root> 
</root> 

Das in

<root> 
    <A>foo</A><B>bar</B> 
</root> 

Ergebnisse Ich weiß, dass die XML-Ausgabe gültig ist und kann von anderen Anwendungen wie Internet Explorer oder einem anderen Programm, das XMLDOM, libXML oder ähnliches verwendet, gelesen werden. Aber aus ästhetischen Gründen und wahrscheinlich um die manuelle Bearbeitung zu vereinfachen, möchte ich eine gut formatierte Ausgabe erhalten.

Wie kann ich das Skript ändern, um dieses Ergebnis zu erhalten?

<root> 
    <A>foo</A> 
    <B>bar</B> 
</root> 

Ich habe die appendChild(CRLF) an einigen Stellen hinzugefügt. Aber es funktioniert nicht zwischen den hinzugefügten Elementen.

Antwort

0

Einrücken und Formatieren von XML-Dokumenten ist nicht mit XML-Markup und Inhalt möglich. Xml konzentriert sich auf eine Möglichkeit, Daten für Softwaresysteme darzustellen. Viele XML-fähige Anwendungen werden die Darstellung von Xml durch Einrückung und andere Formatierungen selbst behandeln (z. B. einen Webbrowser). Auch hier müssen Sie dem IE nicht sagen, wo er eine neue Zeile einfügen soll und wo er einrücken soll, da er XML versteht, indem er einen bestimmten Inhalt in XML selbst (z. B. CRLF) einfügt. Wenn Sie es immer noch so machen, wie Sie es gewählt haben, sollten Sie darauf achten, dass XML-Parser und Toolkits solche Inhalte als XML behandeln und entsprechend verarbeiten.