我想使用Microsoft / XMLDOM对象修改XLM文档。输出应将每个元素放在一个新行上,缩进级别应与嵌套级别匹配。我用这样的脚本尝试了这个:
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");
使用此输入文件&#34; in.xml&#34;
<root>
</root>
这导致
<root>
<A>foo</A><B>bar</B>
</root>
我知道XML输出是有效的,可以被其他应用程序读取,例如Internet Explorers或任何其他使用XMLDOM,libXML或类似程序的程序。但出于原因并且可能简化手动编辑,我希望得到格式良好的输出。
如何更改脚本以获得此结果?
<root>
<A>foo</A>
<B>bar</B>
</root>
我在某些地方添加了appendChild(CRLF)
。但它在添加的元素之间不起作用。
答案 0 :(得分:0)
使用XML标记和内容无法完成XML文档的缩进和格式化。 Xml专注于表示软件系统数据的方式。 许多支持XML的应用程序将通过缩进和其他格式化本身(例如Web浏览器)来处理Xml的表示。同样,您不需要告诉IE在哪里放置新行以及在哪里缩进,因为它通过将任何特定内容放入XML本身(例如CRLF)来理解XML。 如果您仍然愿意按照您选择的方式进行操作,请注意XML解析器和工具包会将任何此类内容视为XML并进行相应处理。