2008-09-17 5 views
2

一部のAPIがXMLドキュメントのルートを指すXmlCursorを返します。私はこれをすべて別のorg.w3c.DOM表現ドキュメントに挿入する必要があります。開始時DOMドキュメントにXmlCursorコンテンツを挿入する方法

:私は、元のDOM文書は次のように変更したい終わり

<foo>

</foo>

<foo>

  <someOtherInsertedElement>

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

  </someOtherInsertedElement>

</foo>

注:document.importNode(cursor.getDomNode()) doesnの

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

DOM文書に XmlCursorのpoiting動作しません - 例外がスローされます:NOT_SUPPORTED_ERR:実装は要求されたタイプのオブジェクトをサポートしませんまたは操作。言い換えれば、そう

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

答えて

6

はこのような何かを試してみてください

  1. は、カーソルからDOMノードを取得します。この場合はDOMDocumentなので、getFirstChild()を実行してルートノードを取得します。
  2. DOMDocumentにインポートします。
  3. DOMDocumentで他のものを行います。
  4. インポートされたノードを右側のノードに追加します。

インポートする理由は、ノードが常に所与のDOMDocumentに「所属する」ということです。元のノードを追加するだけで例外が発生します。

+0

がimportNodeのに失敗します: org.w3c.dom.DOMException:NOT_SUPPORTED_ERR:実装がサポートしていません

Node importNode = document.importNode(originalNode);

は、この問題を修正しましたオブジェクトまたは操作の要求されたタイプorg.apache.xerces.dom.CoreDocumentImpl.importNode(不明なソース) at org.apache.xerces.dom.CoreDocumentImpl.importNode(不明なソース) – Juraj

+0

ah。それはDOMDocumentをインポートしている可能性が高いためです。私の悪い、私はそのビットを逃した。 try cursor.getDomNode.getFirstChild() – Sietse

+0

cursor.getDomNode.getFirstChild()helped。ありがとう。あなたの答えでそれを修正してください(私は自分自身でそれを行うには十分な評判がありません:)) – Juraj

1

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

この

は失敗しました:

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

+0

わからないなぜなら、これが助けになった!ありがとう – oleh

関連する問題