Создать 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 и обрабатывать его соответствующим образом.

Другие вопросы по тегам