cs_cfz
Messages postés23Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 4 mars 2006
-
4 mars 2006 à 14:46
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
4 mars 2006 à 16:16
Bonjour,
j'ai un document Xml qui me sert de template pour en créer d'autres
j'ouvre le document template :
XmlDocument XmlTemplate =
new
XmlDocument();
XmlTemplate.Load(
"Template.xml");
Je récupère les noeuds du document Xml pour les mettre dans mon document Xml final
foreach (
XmlNode XmlNodeLoc
in XmlTemplate.DocumentElement.ChildNodes)
{
XmlRoot.AppendChild(XmlNodeLoc); <--- ne marche pas...
ArgumentException was unhandled : The node to be inserted is from a different document context.
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 4 mars 2006 à 16:04
Je pense qu'il y a moyen de faire autrement mais je ne maitrise pas encore tous les aspects des manipulations Xml.
Sinon j'avais complètement oublier l'existence de la méthode XmlDocument.ImportNode, qui devrait résoudre ton problème sans tuer les performances avec InnerXml.
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 4 mars 2006 à 15:07
Ok.
Sert toi de InnerXml ou OuterXml alors.
Je ne sais pas ce que ça peut donner sur les perfs ensuite, mais je ne connais pas d'autre méthode pour "passer" un noeud d'un document à l'autre.
/*
coq
MVP Visual C#
*/
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_cfz
Messages postés23Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 4 mars 2006 4 mars 2006 à 15:40
Oui c'est bien ça... malheureusement OuterXml est en lecture seule, la solution que je retiens donc pour le moment est d'utiliser InnerXml, puis de copier les attributs les uns après les autres à l'aide d'un foreach.
pour info j'explique un peu mieux mon cas... (ptet que je m'y prend mal)
j'ai un document XmlTemplate qui dois me servir de base (simplifié ici au minimum... en effet, il est prévu d'y ajouter de nouveaux sous-noeuds au fur et à mesure de l'avancement du développement) :
XmlTemplate :
Celui-ci me permet de générer un document XmlSeasons.Xml comprenant plusieurs noeuds <Season>.
Ainsi, à chaque fois que l'utilisateur décide d'ajouter une "saison", je copie l'ensemble des noeuds de XmlTemplate à la fin de XmlSeasons.Xml (en y ajoutant bien entendu les bon paramètres (description, identifiant, etc...).
cs_cfz
Messages postés23Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 4 mars 2006 4 mars 2006 à 16:05
Pour info, voilà la fonction que j'ai écrite, question performence je n'ai fait aucun test... je ferais les tests plus tard.. lorsque j'aurais suffisamment avancé sur mon projet
/// <summary>
/// Fonction permettant d'ajouter un noeud Xml quelconque à un document Xml
/// </summary>
/// Document Xml où l'on ajoute le noeud