使用缩进创建XML

时间:2017-02-06 11:46:38

标签: xml xmldom

我想使用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)。但它在添加的元素之间不起作用。

1 个答案:

答案 0 :(得分:0)

使用XML标记和内容无法完成XML文档的缩进和格式化。 Xml专注于表示软件系统数据的方式。 许多支持XML的应用程序将通过缩进和其他格式化本身(例如Web浏览器)来处理Xml的表示。同样,您不需要告诉IE在哪里放置新行以及在哪里缩进,因为它通过将任何特定内容放入XML本身(例如CRLF)来理解XML。 如果您仍然愿意按照您选择的方式进行操作,请注意XML解析器和工具包会将任何此类内容视为XML并进行相应处理。