2

一部の API は、XML ドキュメントのルートを指す XmlCursor を返します。このすべてを別の org.w3c.DOM 表現のドキュメントに挿入する必要があります。

開始時: XmlCursor ポイティング オン

<a> <b> some text </b> </a>

DOM ドキュメント:

<foo>

</foo>

最後に、元の DOM ドキュメントを次のように変更したいと思います。

<foo>

  <someOtherInsertedElement>

    <a> <b> some text </b> </a>

  </someOtherInsertedElement>

</foo>

注:document.importNode(cursor.getDomNode())機能しません - 例外がスローされます: NOT_SUPPORTED_ERR: 実装は、要求されたタイプのオブジェクトまたは操作をサポートしていません。

4

2 に答える 2

6

次のようなことを試してください:

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 に「属している」ためです。元のノードを追加するだけで例外が発生します。

于 2008-09-17T13:34:37.090 に答える
1

私は同じ問題を抱えていました。

これは失敗していました:

Node importNode = document.importNode(originalNode);

これで問題が解決しました:

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

于 2012-11-02T16:38:11.530 に答える