我试图将一个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)发布于 2012-05-15 15:13:49
replaceChild的语法是:
var objXMLDOMNode = oXMLDOMNode.replaceChild(newChild, oldChild);newChild -一个对象。替换老孩子的新孩子的地址。如果为空,则在没有replacement.oldChild对象的情况下删除oldChild。将被新孩子替换的旧孩子的地址.看起来,您必须反转论点,。运行replaceChild()的节点应该是要替换的节点的父。您不应该在document上运行它。最后,由于您要替换来自不同文档的节点,所以首先应该使用导入并使用xmlDoc1.importNode(secondNode, true)。在新的上下文中使用cloning之前,您还可以考虑使用cloneNode(deep)的节点(这样就有了自己的副本)。
附注:不是应该是secondNode而不是代码片段中的oldNode吗?
https://stackoverflow.com/questions/10603591
复制相似问题