Wenn ich anrufe XmlNode.AppendChild()
, erhalte ich folgende Fehlermeldung:
Der einzufügende Knoten stammt aus einem anderen Dokumentkontext.
static public XmlNode XMLNewChildNode(XmlNode oParent, string sName,
string sNamespaceURI, string sNodeType)
{
XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI);
oParent.AppendChild(oNode);
return oNode;
}
Dieser Code wurde von seiner VB 6.0-Version konvertiert, die dies war (bitte ignorieren Sie die optionalen Parameter, ich habe Überladungen für sie in der C # -Version):
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
Warum funktioniert der VB-Code, während das C # nicht funktioniert? Gibt es Unterschiede zwischen dem Umgang von VB und C # mit XML, die ich beachten muss?
OwnerDoccument
ist null;ImportNode(..
sollte angerufen werdenoParent
?oParent.ImportNode(oNode, true);