【问题标题】:creating a new, empty document with javascript使用 javascript 创建一个新的空文档
【发布时间】:2009-05-18 23:30:04
【问题描述】:

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

我想复制这些数据,但将所有标签重命名为它们的实际含义。我可以创建一个新的空文档来放入我的新的、命名良好的标签吗?

我试过这个:

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

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

那么,有什么想法可以创建一个空文档吗?

【问题讨论】:

    标签: javascript xml dom


    【解决方案1】:

    我遇到了同样的问题,我解决了如下:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我认为没有根节点就无法创建文档。你可以创建一个假节点:

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

        【讨论】:

        • 谢谢。我已经考虑过这种方法,并且可能最终会使用它。我只是在几个方向上采取了几步,看看哪种方式看起来/感觉更有希望。
        【解决方案4】:
        var xmldom = require('xmldom');
        var tree = (new xmldom.DOMImplementation()).createDocument();
        

        【讨论】:

          【解决方案5】:

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

          document对象可用时(兼容的Web用户代理),createDocument方法的实现可以用document.implementation引用:

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

          然后,您可以像其他方式一样简单地附加您选择的根节点,如下所示(empty_doc 将引用上述调用创建和返回的文档):

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

          【讨论】:

            猜你喜欢
            • 2012-02-25
            • 1970-01-01
            • 2018-07-08
            • 1970-01-01
            • 1970-01-01
            • 2020-01-16
            • 1970-01-01
            • 1970-01-01
            • 2019-10-05
            相关资源
            最近更新 更多