создание нового, пустого документа с помощью JavaScript - PullRequest
4 голосов
/ 19 мая 2009

Я работаю с не очень понятным xml (все теги такие вещи, как "TX", "H", "VC")

Я хотел бы сделать копию этих данных, но со всеми тегами, переименованными в то, что они на самом деле означают. Могу ли я создать новый пустой документ, в который будут помещены мои новые теги с красивыми именами?

Я пробовал это:

doc = (new DOMParser()).parseFromString("", 'text/xml');

но когда я это делаю, я получаю документ с дочерним узлом, а не пустой. Кроме того, тэг этого ребенка "parsererror"

Итак, есть идеи, как создать пустой документ?

Ответы [ 5 ]

4 голосов
/ 18 ноября 2009

У меня та же проблема, и я решил ее, как показано ниже:

xmlDoc = document.implementation.createDocument("", "", null);
root = xmlDoc.createElement("description");
xmlDoc.appendChild(root);
alert((new XMLSerializer()).serializeToString(xmlDoc));
3 голосов
/ 15 мая 2012

Вы можете создать пустой документ в браузере, совместимом с DOM W3C (IE9 + и остальные), с помощью следующего кода.

var doc = (new DOMParser()).parseFromString('<dummy/>', 'text/xml');
doc.removeChild(doc.documentElement);
1 голос
/ 19 мая 2009

Я не думаю, что вы можете создать документ без корневого узла. Вы можете создать поддельный узел:

doc = (new DOMParser()).parseFromString("<dummy/>", 'text/xml');

Однако лучшим решением может быть создание констант для имен узлов:

// Use different variable names, like RealTxName, if desired
var REAL_TX_NAME = "TX";
var REAL_H_NAME = "H";

...
doc.find (REAL_TX_NAME);
...
0 голосов
/ 04 ноября 2018

Спецификация WHATWG метода createDocument позволяет предоставить null для каждого из 3 аргументов createDocument, чтобы создать и вернуть «пустой» XML-документ - один без какого-либо корневого узла и с application/xml в качестве типа контента:

document.implementation.createDocument(null, null, null);

Затем вы можете просто присоединить к нему выбранный вами корневой узел, просто добавив его, как вы сделали бы иначе, следующим образом (empty_doc будет ссылаться на документ, созданный и возвращенный вызовом выше):

empty_doc.appendChild(empty_doc.createElement("foobar"));
0 голосов
/ 26 апреля 2017
var xmldom = require('xmldom');
var tree = (new xmldom.DOMImplementation()).createDocument();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...