2010-03-12 6 views
4

Je construis un outil qui crée/édite des fichiers XML, et je veux pouvoir le peupler avec des fragments de modèles définis dans un autre fichier XML. Par exemple, l'outil possède un bouton "Ajouter un élément FooBarBaz" qui ajoute un élément au nouveau document en cours de création, et je souhaite ajouter FooBarBaz en le copiant à partir d'un modèle.Comment puis-je copier un XmlNode d'un XmlDocument à un autre?

Ou disons que ceci est mon fichier modèle:

<Templates> 
    <FooBarBaz Attribute="Value"> 
     <ChildElement/> 
    </FooBarBaz> 
</Templates> 

Je peux alors saisir un fragment de modèle avec .getElementsByTagName (« foobarbaz »), et je voudrais pouvoir l'injecter dans la nouvelle document avec quelque chose comme .AppendChild (templateNode). Mais le problème est qu'un XmlNode ne peut pas être copié d'un XmlDocument à un autre, même si vous utilisez .Clone() ou .CloneNode(), parce que AppendChild() lève une exception disant que l'élément template appartient à un autre contexte .

Existe-t-il un moyen facile de copier un System.Xml.XmlNode entre System.Xml.XmlDocuments?

Répondre

3

Vérifiez la méthode ImportNode:

var myNewDoc = new XmlDocument(); 
myNewDoc.ImportNode(xmlNode, true);