2017-02-06 4 views
0

Я хочу изменить документ 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). Но между добавленными элементами это не работает.

ответ

0

Отступы и форматирование XML-документов не выполняются с использованием разметки XML и контента. Xml фокусируется на способе представления данных для программных систем. Многие приложения, ориентированные на XML, будут обрабатывать представление Xml, путем отступов и другого форматирования, сами (например, веб-браузер). Опять же, вам не нужно указывать IE, куда помещать новую строку и где отступать, потому что она понимает XML, помещая какой-либо конкретный контент в сам XML (например, CRLF). Если вы все еще предпочитаете делать это так, как вы выбрали, будьте осторожны, что синтаксические анализаторы XML и инструментальные средства будут обрабатывать любой такой контент, как XML, и обрабатывать соответствующим образом.