使用javascript创建一个新的空文档

时间:2009-05-18 23:30:05

标签: javascript xml dom

我正在使用一些非直观的xml(所有标签都是“TX”,“H”,“VC”之类的东西)。

我想复制这些数据,但所有标签都重命名为实际意义。我可以创建一个新的空文档来将我新的,名称很好的标签放入?

我试过这个:

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

但是当我这样做时,我最终会得到一个包含子节点的文档,而不是空的。此外,该孩子的标记名是“parsererror”

那么,任何想法如何创建一个空文档?

5 个答案:

答案 0 :(得分:4)

我有同样的问题,我解决了它,如下所示:

xmlDoc = document.implementation.createDocument("", "", null);
root = xmlDoc.createElement("description");
xmlDoc.appendChild(root);
alert((new XMLSerializer()).serializeToString(xmlDoc));

答案 1 :(得分:3)

您可以使用以下代码在兼容W3C DOM的浏览器(IE9 +和其他浏览器)中创建空document

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

答案 2 :(得分:1)

我不认为你可以在没有根节点的情况下创建文档。您可以创建一个假节点:

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);
...

答案 3 :(得分:0)

var xmldom = require('xmldom');
var tree = (new xmldom.DOMImplementation()).createDocument();

答案 4 :(得分:0)

WHATWG's specification of the createDocument method允许为null的3个参数中的每一个提供createDocument,以创建并返回一个“空” XML文档-一个没有任何根节点,并且以application/xml作为其内容类型:

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

您可以像下面那样简单地附加您所选择的根节点,方法是简单地附加它,如下所示(empty_doc指的是上述调用创建并返回的文档):

empty_doc.appendChild(empty_doc.createElement("foobar"));