Lorsque j'appelle XmlNode.AppendChild()
, j'obtiens cette erreur:
Le nœud à insérer provient d'un contexte de document différent.
static public XmlNode XMLNewChildNode(XmlNode oParent, string sName,
string sNamespaceURI, string sNodeType)
{
XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI);
oParent.AppendChild(oNode);
return oNode;
}
Ce code a été converti à partir de VB 6.0 qui était celle-ci (ignorez les paramètres facultatifs, vous avez des surcharges dans la version C #)):
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
Pourquoi le code VB fonctionne-t-il alors que le C # ne fonctionne pas? Existe-t-il des différences entre VB et le traitement XML C #, que je dois connaître?]
Vous devez importer le nœud dans le document avant de l'ajouter:
XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI);
//necessary for crossing XmlDocument contexts
XmlNode importNode = oParent.OwnerDocument.ImportNode(oNode, true);
oParent.AppendChild(importNode);
return oNode;