Я хочу изменить документ XLM с помощью объекта Microsoft/XMLDOM. Выход должен размещать каждый элемент на новой строке, а уровень отступа должен соответствовать уровню вложенности. Я попытался это с помощью сценария, как это:Создать 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>
В некоторых местах я добавил appendChild(CRLF)
. Но между добавленными элементами это не работает.