首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSXML replaceChild的正确使用

MSXML replaceChild的正确使用
EN

Stack Overflow用户
提问于 2012-05-15 15:04:12
回答 1查看 1.7K关注 0票数 0

我试图将一个XML文档中的一个节点替换为另一个XML文档中的一个节点。我得到了以下错误:

代码语言:javascript
复制
Insert position node must be a Child of the node to insert under.

这是我的XML: XMLDOC1的简化版本

代码语言:javascript
复制
<pages>
  <page id="1">
     <content>First Document</content>
  </page>
</pages>

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

代码语言:javascript
复制
<pages>
  <page id="1">
     <content>Second Document</content>
  </page>
</pages>

我需要将第一个文档的页面节点替换为第二个文档的页面节点。我的尝试是这样的:

代码语言:javascript
复制
firstNode = xmlDoc1.selectSingleNode("//page[@id=1]")
secondNode = xmlDoc2.selectSingleNode("//page[@id=1]")
xmlDoc1.replaceChild(firstNode, oldNode)

谢谢。

溶液

代码语言:javascript
复制
firstNode.parentNode.replaceChild(xmlDoc1.importNode(secondNode, true), firstNode)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-15 15:13:49

replaceChild的语法是:

代码语言:javascript
复制
var objXMLDOMNode = oXMLDOMNode.replaceChild(newChild, oldChild);

  • newChild -一个对象。替换老孩子的新孩子的地址。如果为空,则在没有replacement.
  • oldChild对象的情况下删除oldChild。将被新孩子替换的旧孩子的地址.

看起来,您必须反转论点,。运行replaceChild()的节点应该是要替换的节点的。您不应该在document上运行它。最后,由于您要替换来自不同文档的节点,所以首先应该使用导入并使用xmlDoc1.importNode(secondNode, true)。在新的上下文中使用cloning之前,您还可以考虑使用cloneNode(deep)的节点(这样就有了自己的副本)。

附注:不是应该是secondNode而不是代码片段中的oldNode吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10603591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档