Accueil > Forum > > > > Création d'un document Xml à partir d'un autre
Création d'un document Xml à partir d'un autre
samedi 4 mars 2006 à 14:46:11 |
Création d'un document Xml à partir d'un autre

cfz
|
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 créé un nouveau document Xml vide
XmlDocument XmlFinal = new XmlDocument(); XmlFinal.AppendChild(XmlFinal.CreateXmlDeclaration("1.0", null, null)); XmlNode XmlRoot = XmlFinal.CreateElement("Racine");
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. }Que dois-je faire ?
|
|
samedi 4 mars 2006 à 14:51:20 |
Re : Création d'un document Xml à partir d'un autre
|
samedi 4 mars 2006 à 14:57:05 |
Re : Création d'un document Xml à partir d'un autre

cfz
|
Même problème, même exception :'(
XmlRoot.AppendChild(XmlNodeLoc.CloneNode( true));
|
|
samedi 4 mars 2006 à 15:07:54 |
Re : Création d'un document Xml à partir d'un autre

coq
|
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# */
|
|
samedi 4 mars 2006 à 15:13:01 |
Re : Création d'un document Xml à partir d'un autre

coq
|
Euh, j'ai un doute là : ton document final sera donc un clone du modèle non (mis à part les données, les noeuds supplémentaires etc) ?
/* coq MVP Visual C# */
|
|
samedi 4 mars 2006 à 15:40:10 |
Re : Création d'un document Xml à partir d'un autre

cfz
|
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 :
<?xml version="1.0" encoding="utf-8" ?> <Seasons> <Season Identifiant=""> <Description></Description> <Periodes> <!--<Periode Begin="" End=""></Periode>--> </Periodes> </Season> </Seasons>
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...).
Merci en tout cas pour ton aide.
|
|
samedi 4 mars 2006 à 16:04:42 |
Re : Création d'un document Xml à partir d'un autre
|
samedi 4 mars 2006 à 16:05:09 |
Re : Création d'un document Xml à partir d'un autre

cfz
|
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> /// <param name="XmlDoc">Document Xml où l'on ajoute le noeud</param> /// <param name="XmlChildOutside">Noeud Xml devant être copié</param> /// <returns></returns> public static XmlNode AppendChildOutside(XmlDocument XmlDoc, XmlNode XmlChildOutside) { XmlNode XmlChild = null; XmlAttribute XmlAttrib = null; #region Création du nouveau noeud XmlChild = XmlDoc.CreateElement(XmlChildOutside.Name); XmlChild.InnerXml = XmlChildOutside.InnerXml; #region Ajout des attributs foreach (XmlAttribute XmlAttribOutside in XmlChildOutside.Attributes) { XmlAttrib = XmlDoc.CreateAttribute(XmlAttribOutside.Name); XmlAttrib.InnerXml = XmlAttribOutside.InnerXml; XmlChild.Attributes.Append(XmlAttrib); } #endregion #endregion return XmlChild; }
|
|
samedi 4 mars 2006 à 16:10:29 |
Re : Création d'un document Xml à partir d'un autre

cfz
|
Bien vu ;) il ne me reste plus qu'a remplacer la fonction que je viens d'écrire ;) ca marche nickel avec ImportNode ca me paraissait bizarre qu'une telle fonction n'existait pas ;) Merci pour tou++
|
|
samedi 4 mars 2006 à 16:16:10 |
Re : Création d'un document Xml à partir d'un autre

coq
|
Oui moi aussi ^^ PS : j'ai retirer la réponse acceptée sur l'utilisation de InnerXml, qui du coup est devenue totalement ridicule  /* coq MVP Visual C# */
|
|
Cette discussion est classée dans : xml, document, template, xmldocument, xmlfinal
Répondre à ce message
Sujets en rapport avec ce message
[ASP][C#] Validation de fichier XML [ par vonbier ]
Salut,j'ai crée un Web service qui reçoit en paramètre un fichier XML. La première chose que je voudrais qu'il fasse, c'est de checker si ce fichier e
[C#]Comment fermé un xml ouvert par XmlDocument. [ par PascalCmoa ]
PascalCmoa email: PascalCmoaBonjour à tous <img src=/img
obtenir les attributs d'un noeud d'un document xml [ par godefrw ]
Bonjour, je cherche à obtenir la valeur d'un attribut d'un noeud d'un fichier Xml. j'ai charger mon fichier dans un XmlDocument. Avec un XmlReader c'e
XML [ par dibouched ]
Bonjour , je viens de commencer à utiliser les document XML avec c#pour lire le continu d'un document XML j'ai utlise XmlDoc =new XmlDocument();
Copie d'un XMLNodeList dans un document XML [ par guidance ]
Bonjour, Je souhaiterais copier une arborescence xml depuis un fichier xml dans un autre xml mais sans utiliser xslt. Je creer donc un document XML
C# - System.Xml.Document: Comment sauvegarder les caractères spéciaux dans le fichier xml [ par smashingraph ]
Bonjour, J'ai un petit souci lors de la sauvegarde de mon fichier xml. J'utilises une instance de la classe System.Xml.Document. Je charges un docum
Définir une base de langue à l'aide d'Xml [ par cfz ]
Bonjour, Etant un ancien développeur VB6 je souhaite me remettre au gout du jour avec .Net et C# depuis quelques jours... mais ce n'est pas toujours t
comment représenter un document xml en treeViewer [ par moha_yougo ]
je suis débutant je veut représenter des fichiers xml avec treeview comment le faire
[ xml/c#] comment représenter xml document (élément et attributs) dans TreeViewer [ par moha_yougo ]
je veut représenter un document xml (élément et attributs) dans un TeeVieweraidez moi a le faire
enregistrer mon XML dans une string et non dans un fichier. [ par mathmax ]
Bonjour,Voilà, j'ai un document XML dans lequel j'aimerais faire des modifications de type string (remplaçement de chaine de caractères, ...) et des m
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|