2009-03-11 9 views

Répondre

13

Un XmlDocumentest essentiellement un XmlNode, vous pouvez l'ajouter comme vous le feriez pour tout autre XmlNode. Cependant, la différence provient du fait que ceXmlNode n'appartient pas au document cible, par conséquent vous devrez utiliser la méthode ImportNode puis effectuer l'ajout.

// xImportDoc is the XmlDocument to be imported. 
// xTargetNode is the XmlNode into which the import is to be done. 

XmlNode xChildNode = xSrcNode.ImportNode(xImportDoc, true); 
xTargetNode.AppendChild(xChildNode); 
+2

ah oui, mais qu'est-ce que xSrcNode? Pourquoi j'obtiens le message d'erreur: Impossible d'importer des noeuds de type 'Document'. Quel type est xTargetNode? – fijiaaron

+2

@fijiaaron Vous devez sélectionner l'élément racine du document: 'XmlNode xChildNode = xSrcNode.ImportNode (xImportDoc.DocumentElement, true);' – nmat

+0

Si votre XmlDoc est actuellement tapé en tant que XmlNode, ou si vous essayez d'importer un XmlNode vous pouvez faire à la place 'XmlNode xChildNode = xSrcNode.ImportNode (xImportDoc.OwnerDocument.DocumentElement, true);' –

1

Peut-être comme ceci:

XmlNode node = ...... // belongs to targetDoc (XmlDocument) 

node.AppendChild(targetDoc.ImportNode(xmlDoc.DocumentElement)); 

Marc

+0

AFAIK, vous devez ** * importer un nœud si elle ne fait pas partie du XmlDocument courant avant vous pouvez l'ajouter. Vois ma réponse. – Cerebrus

+0

Oui, il semble que vous devez appeler ImportNode en effet, mais que * va * créer une copie du document Xml ..... –

5

Oui:

XmlNode imported = targetNode.OwnerDocument.ImportNode(otherDocument.DocumentElement, true); 
targetNode.AppendChild(imported); 

Je pense que cela crée un clone de votre document bien.

0

Une fois que vous avez le nœud racine du document XML en question, vous pouvez l'ajouter en tant que nœud enfant du nœud en question. Cela a-t-il du sens?

1

Disons que vous avez la construction suivante:

La structure suivante est stockée dans un XmlElement nommé xmlelement:

</root> 

et la structure suivante est stockée dans un objet XmlNode nommé FooNode ;

<foo> 
    <bar>This is a test</bar> 
    <baz>And this is another test</baz> 
</foo> 

Ensuite, vous effectuez les opérations suivantes:

XmlNode node = doc.ImportNode(FooNode.SelectSingleNode("foo"), true); 
xmlElement.AppendChild(node); 

aide quelqu'un espère que ce

Questions connexes