質問

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

開始時:XmlCursor がポイントしている

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

DOM ドキュメント:

<フー>

</foo>

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

<フー>

<someOtherInsertedElement>

u003Ca>u003Cb>いくつかのテキストu003C/b>u003C/a>

</someOtherInsertedElement>

</foo>

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

役に立ちましたか?

解決

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

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

他のヒント

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

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

Node importNode = document.importNode(originalNode);

これにより問題が解決されました。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top