0

ある XML ドキュメントのノードを別の XML ドキュメントのノードに置き換えようとしています。次のエラーが表示されます。

Insert position node must be a Child of the node to insert under.

これは私の XML の簡易バージョンです: XMLDOC1

<pages>
  <page id="1">
     <content>First Document</content>
  </page>
</pages>

もう 1 つの XML ドキュメントは、構造がまったく同じです: XMLDOC2

<pages>
  <page id="1">
     <content>Second Document</content>
  </page>
</pages>

最初のドキュメントのページ ノードを 2 番目のドキュメントのページ ノードに置き換える必要があります。私の試みは次のようになります。

firstNode = xmlDoc1.selectSingleNode("//page[@id=1]")
secondNode = xmlDoc2.selectSingleNode("//page[@id=1]")
xmlDoc1.replaceChild(firstNode, oldNode)

ありがとう。

解決

firstNode.parentNode.replaceChild(xmlDoc1.importNode(secondNode, true), firstNode)
4

1 に答える 1

1

の構文は次のとおりreplaceChildです。

var objXMLDOMNode = oXMLDOMNode.replaceChild(newChild, oldChild);
  • newChild-オブジェクト。古い子を置き換える新しい子のアドレス。Nullの場合、oldChildは置き換えなしで削除されます。
  • oldChild-オブジェクト。新しい子に置き換えられる古い子のアドレス。

引数を逆にする必要があるようです。また、実行するノードは、置き換えるノードのreplaceChild()である必要があります。で実行しないでください。最後に、別のドキュメントのノードに置き換えるため、最初にを使用してインポートする必要があります。新しいコンテキストで使用する前に、ノードを検討することもできます(独自のコピーを作成するため)。documentxmlDoc1.importNode(secondNode, true)cloningcloneNode(deep)

psは、コードスニペットでsecondNodeはなく、そうではありませんoldNodeか?

于 2012-05-15T15:13:49.297 に答える