2010-06-10 11 views
87

Kiedy wzywam XmlNode.AppendChild(), otrzymuję ten błąd:Błąd: „Węzeł być włożona jest z innym kontekście dokumentu”

The node to be inserted is from a different document context.

static public XmlNode XMLNewChildNode(XmlNode oParent, string sName, 
    string sNamespaceURI, string sNodeType) 
{ 
    XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI); 
    oParent.AppendChild(oNode); 
    return oNode; 
} 

Kod ten został przekształcony z jego VB wersji 6.0, która była to (proszę ignorować opcjonalne parametry, mam przeciążeń dla nich w C# wersji):

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 

Dlaczego praca kod VB a C# nie? Czy istnieją różnice między tym, jak XML obsługujący VB i C#, które muszę mieć świadomość?

Odpowiedz

164

trzeba importować węzeł do dokumentu przed dołączenie go:

XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI); 

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

oParent.AppendChild(importNode); 
return oNode; 
+1

Thanks Sir! ImportNode ma dwie paramy ... druga dotyczy deepClone ... Jak mogę zdecydować, czy powinienem przekazać True lub False? – Bohn

+7

@BDotA true, jeśli chcesz zaimportować węzeł i wszystkie jego elementy podrzędne; false, jeśli chcesz tylko zaimportować węzeł najwyższego poziomu. –

+0

dzięki ... Próbowałem zarówno true i false i otrzymuję Null Ref Exception na linii ImportNode ... jest nadal coś z moich kodów XML? czy ten jest związany z danymi, które przekazuję? – Bohn

Powiązane problemy