我正在使用一些非直观的xml(所有标签都是“TX”,“H”,“VC”之类的东西)。
我想复制这些数据,但所有标签都重命名为实际意义。我可以创建一个新的空文档来将我新的,名称很好的标签放入?
我试过这个:
doc = (new DOMParser()).parseFromString("", 'text/xml');
但是当我这样做时,我最终会得到一个包含子节点的文档,而不是空的。此外,该孩子的标记名是“parsererror”
那么,任何想法如何创建一个空文档?
答案 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"));