2017-02-06 94 views
0

我想使用Microsoft/XMLDOM對象修改XLM文檔。輸出應該將每個元素放在一個新行上,並且縮進級別應該與嵌套級別相匹配。我有一個這樣的腳本嘗試這樣做:使用縮進創建XML

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"); 

有了這個輸入文件 「in.xml」

<root> 
</root> 

這導致

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

我知道XML輸出是否有效並可以被其他應用程序讀取,例如Internet Explorers或任何其他使用XMLDOM,libXML或類似軟件的程序。但出於美觀的原因,可能爲了簡化手動編輯,我想要得到格式良好的輸出。

如何更改腳本以獲得此結果?

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

我在某些地方添加了0​​。但是在添加的元素之間不起作用。

回答

0

XML文檔的縮進和格式化不使用XML標記和內容來完成。 Xml專注於表示軟件系統的數據。 許多支持XML的應用程序將通過縮進和其他格式(例如Web瀏覽器)來處理Xml的表示。同樣,您不需要告訴IE在哪裏放置新行和縮進位置,因爲它通過將任何特定內容放入XML本身(例如CRLF)來理解XML。 如果您仍然願意按照您選擇的方式來執行此操作,請注意XML解析器和工具包會將任何此類內容視爲XML並相應地進行處理。