首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >错误:“要插入的节点来自不同的文档上下文”

错误:“要插入的节点来自不同的文档上下文”
EN

Stack Overflow用户
提问于 2010-06-11 06:57:46
回答 1查看 87.8K关注 0票数 116

当我调用XmlNode.AppendChild()时,我得到这个错误:

要插入的节点来自不同的文档上下文。

代码语言:javascript
复制
static public XmlNode XMLNewChildNode(XmlNode oParent, string sName, 
    string sNamespaceURI, string sNodeType)
{
    XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI);
    oParent.AppendChild(oNode);
    return oNode;
}

这段代码是从它的VB6.0版本转换而来的(请忽略可选参数,我在C#版本中重载了它们):

代码语言:javascript
复制
Public Function XMLNewChildNode(ByVal oParent As IXMLDOMNode, ByVal _
    sName As String, Optional ByVal sNamespaceURI As String = "", _
    Optional ByVal sNodeType As String = "element") As IXMLDOMNode
'**************** DESCRIPTION *******************
  'Create a new Child Node for passed Parent.
'***************** VARIABLES ********************
  Dim oNode As IXMLDOMNode
'************************************************
  Set oNode = moDoc.createNode(sNodeType, sName, sNamespaceURI)
  Call oParent.appendChild(oNode)
  Set XMLNewChildNode = oNode
End Function

为什么VB代码可以工作,而C#不能?我需要注意的是,VB和C#处理XML的方式有什么不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-11 07:18:36

在追加节点之前,需要将节点导入到文档中:

代码语言:javascript
复制
XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI);

//necessary for crossing XmlDocument contexts
XmlNode importNode = oParent.OwnerDocument.ImportNode(oNode, true);

oParent.AppendChild(importNode);
return oNode;
票数 216
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3019136

复制
相关文章

相似问题

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