Создать XML с отступом
Я хочу изменить документ XLM, используя объект Microsoft/XMLDOM. Выходные данные должны размещать каждый элемент на новой строке, а уровень отступа должен соответствовать уровню вложенности. Я попробовал это с помощью сценария, как это:
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 Explorer или любой другой программой, которая использует XMLDOM, libXML или что-то подобное. Но по эстетическим причинам и, возможно, для упрощения ручного редактирования я хотел бы получить хорошо отформатированный вывод.
Как я могу изменить скрипт, чтобы получить этот результат?
<root>
<A>foo</A>
<B>bar</B>
</root>
Я добавил appendChild(CRLF)
в некоторых местах. Но это не работает между добавленными элементами.
1 ответ
Отступы и форматирование документов XML не выполняются с использованием разметки и содержимого XML. Xml фокусируется на способе представления данных для программных систем. Многие приложения, поддерживающие XML, сами будут обрабатывать представление Xml посредством отступов и другого форматирования (например, веб-браузер). Опять же, вам не нужно указывать IE, где ставить новую строку и где делать отступ, потому что он понимает XML, помещая любой конкретный контент в сам XML (например, CRLF). Если вы по-прежнему предпочитаете делать это так, как вам хотелось, помните, что анализаторы XML и наборы инструментов будут обрабатывать любой такой контент как XML и обрабатывать его соответствующим образом.