【问题标题】:How to insert XmlCursor content to DOM Document如何将 XmlCursor 内容插入 DOM 文档
【发布时间】:2010-09-10 03:15:19
【问题描述】:

某些 API 返回指向 XML 文档根目录的 XmlCursor。我需要将所有这些插入到另一个 org.w3c.DOM 表示的文档中。

开始时: XmlCursor 指向

一些文字

DOM 文档:

最后,我希望将原始 DOM 文档更改如下:

  

     一些文字

  

注意:document.importNode(cursor.getDomNode()) 不起作用 - 抛出异常:NOT_SUPPORTED_ERR:实现不支持请求的对象或操作类型。

【问题讨论】:

    标签: java xml xmlbeans


    【解决方案1】:

    我遇到了同样的问题。

    这失败了:

    Node importNode = document.importNode(originalNode);

    这解决了问题:

    Node importNode = document.importNode(originalNode.getFirstChild());

    【讨论】:

      【解决方案2】:

      试试这样的:

      Node originalNode = cursor.getDomNode();
      Node importNode = document.importNode(originalNode.getFirstChild());
      Node otherNode = document.createElement("someOtherInsertedElement");
      otherNode.appendChild(importNode);
      document.appendChild(otherNode);
      

      换句话说:

      1. 从光标处获取 DOM 节点。在这种情况下,它是一个 DOMDocument,所以 getFirstChild() 来获取根节点。
      2. 将其导入 DOMDocument。
      3. 用 DOMDocument 做其他事情。
      4. 将导入的节点追加到正确的节点。

      导入的原因是节点总是“属于”给定的 DOMDocument。只是添加原始节点会导致异常。

      【讨论】:

      • 在 importNode 上失败:org.w3c.dom.DOMException:NOT_SUPPORTED_ERR:实现不支持请求的对象或操作类型。在 org.apache.xerces.dom.CoreDocumentImpl.importNode(未知来源) 在 org.apache.xerces.dom.CoreDocumentImpl.importNode(未知来源)
      • 啊。那可能是因为您正在导入 DOMDocument。我的错,我错过了那一点。试试 cursor.getDomNode.getFirstChild()
      • cursor.getDomNode.getFirstChild() 有帮助。多谢。请在您的回答中更正它(我自己没有足够的声誉:])
      • 起初(在问这里之前)我做了与你类似的解决方案,我只是错过了 getFirstChild() :) 有时会发生一个愚蠢的小失误让一切都错了......
      猜你喜欢
      • 2019-06-08
      • 1970-01-01
      • 2021-07-26
      • 2021-07-02
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      相关资源
      最近更新 更多