1

2つのノードがnode1ありnod2、親ドキュメントが異なるので、呼び出したい

node1.appendChild(node2);

このノードでは機能しますが、アプリケーションがクラッシュします。以下に、ノードの所有者ドキュメントとXMLを示します。

Document document1 = node1.getOwnerDocument();
Document document2 = node2.getOwnerDocument();

両方のノードに異なる所有者ドキュメントがあります。node1下記の所有者文書

<?xml version="1.0" encoding="UTF-8"?>
<ClientGetOTPSeedMessage>
    <UserID>userID</UserID>
    <DeviceInfo/>
</ClientGetOTPSeedMessage>

所有者node2の文書は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<Desc>
    <Desc1>First name</Desc1>
    <Desc2>Second name</Desc2>
</Desc>

今、私はそれをどのように行うことができるかでノードを取得して</Desc>ノードdocument2に配置したいと思います。そして、私はそれを言い、私が互いに追加したいノードを保持したいのですが、私が書くとき<DeviceInfo/>document1node1node2

node1.appendChild(node2); 

私のアプリケーションがクラッシュします。主な理由は、所有者のドキュメントが異なることだと思います。

4

1 に答える 1

3

あなたが言ったように、アプリケーションがクラッシュする理由は、異なる所有者のドキュメントです(詳細についてはこれを参照してください)。この問題を解決するには、次のように、document1にnode2をインポートする必要があります。

n2 = document1.importNode(n2, true);

その後:

 n1.appendChild(n2);

インポートの詳細については、こちらをご覧ください。

于 2012-05-15T15:24:28.493 に答える