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>

另一个 XML 文档的结构完全相同:XMLDOC2

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

我需要将第一个文档的页面节点替换为第二个文档的页面节点。我的尝试如下所示:

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()应该是您要替换的节点的父节点。你不应该在document. 最后,由于您要替换来自不同文档的节点,因此您应该首先使用xmlDoc1.importNode(secondNode, true). 您还可以在新上下文中cloning使用之前考虑使用该节点cloneNode(deep)(这样您就可以拥有自己的副本)。

ps 不应该是secondNode而不是oldNode在您的代码片段中吗?

于 2012-05-15T15:13:49.297 回答