Ajout fichier xml à la fin d'un autre fichier XML [Résolu]

zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 11:58 - Dernière réponse : zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention
- 25 avril 2006 à 17:11
salut tout le monde.
j'ai un projet pu je drois ajouterle contenu d'un fichier XML à lafin d'un autre fichier XML.
j'ai fait une interface ou je selectionne les deux fichiers dans des textBOx
et après j'ai fait un bouton qui permet de faire la copie mais je sais pas koi
mettre dedans.
en fait je suis nouveau en C# j'aimerais bien avoir un exemple d'une fonction qui permet de faire cela.
merci à tous j'attends avec impatience vos conseils.
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 24 avril 2006 à 21:51
3
Merci
doc1.Load("'" + textBox1.Text+"'");
Pas compris là...

Un exemple :

Fichier source :
<?xml version="1.0" encoding="utf-8" ?>
<deplacements>
<deplacement>
<date>01/01/01</date>
<villed>A</villed>
<villea>B</villea>
<km>200</km>
<typed />
<com />
</deplacement>
<deplacement>
<date>02/02/02</date>
<villed>B</villed>
<villea>A</villea>
<km>100</km>
<typed />
<com />
</deplacement>
</deplacements>

Fichier destination :
<?xml version="1.0" encoding="utf-8" ?>
<deplacements>
<deplacement>
<date>03/03/03</date>
<villed>C</villed>
<villea>D</villea>
<km>400</km>
<typed></typed>
<com></com>
</deplacement>
</deplacements>

Code :
string srcFilePath = System.IO.Path.Combine(Application.StartupPath, "Source.xml");
string destFilePath = System.IO.Path.Combine(Application.StartupPath, "Dest.xml");


XmlDocument src = new XmlDocument();
XmlDocument dest = new XmlDocument();


src.Load(srcFilePath);
dest.Load(destFilePath);


// sélection des noeuds à déplacer et du noeud qui les recevra.
XmlNodeList nodesToMove = src.SelectNodes("/deplacements/deplacement");
XmlNode destParentNode = dest.SelectSingleNode("/deplacements");


// copie des noeuds
int nodesCount = nodesToMove.Count;
for ( int i=0; i<nodesCount; i++)
{
XmlNode nodeToMove = nodesToMove[i];


// import
XmlNode importedNode = dest.ImportNode(nodeToMove, true);
destParentNode.AppendChild(importedNode);


//suppression dans la source
nodeToMove.ParentNode.RemoveChild(nodeToMove);
}


// sauvegarde des fichiers
src.Save(srcFilePath);
dest.Save(destFilePath);

/*
coq
MVP Visual C#
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_coq
Meilleure réponse
t_barbillon 341 Messages postés mercredi 8 juin 2005Date d'inscription 10 février 2009 Dernière intervention - 25 avril 2006 à 10:44
3
Merci
Salut, mais pourquoi les "" dans

doc1.Load("'" + textBox1.Text+"'");

Merci t_barbillon 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de t_barbillon
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 24 avril 2006 à 12:13
0
Merci
Salut,

Au risque de me répéter (http://www.csharpfr.com/infomsg/VIDER-FICHIER-XML-DANS-AUTRE-FICHIER-XML-3_720623.aspx) :
"En copiant les XmlNode d'un XmlDocument à l'autre par exemple. (la méthode ImportNode devrait te servir le cas échéant)"

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 14:12
0
Merci
Est ce que tu peux s'il te plaît me donner un exmple de ImportNode.
Commenter la réponse de zikofs
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 14:36
0
Merci
en fait j'ai un ficher xml de la forme:
<deplacements>
<date></date>
<villed></date>
<villea></villea>
<km></km>
<typed></typed>
<com></com>
</deplacemnts>
et je veux copier tous les deplacements qui se trouve dans le premier fichier xml à la fin du second fichier XML.
alors comment je dois faire dans l'exemple qui est sur le site msdn il n'ya pas la propriété qui copie tous les éléments par exemple.
XmlNode newBook = doc2.ImportNode(doc1.DocumentElement.LastChild, true);
doc.DocumentElement.AppendChild(newBook);
Commenter la réponse de zikofs
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 16:20
0
Merci
salut,
je voulais être sûr de l'idéee que je veux faire c'est pour ca que je demande
ton conseil à propos de ce code qui prend le nom de deux fichiers xml rentrés dans deux textbox pour ajouter le premier au deuxiéme:
XmlDocument doc1 = new XmlDocument();
doc1.Load("'" + textBox1.Text+"'");
XmlDocument doc2 = new XmlDocument();
doc1.Load("'" + textBox2.Text + "'");
XmlNode newBook = doc2.ImportNode(doc1.GetElementsByTagName("Deplacements"),true);
doc2.DocumentElement.AppendChild(newBook);

Merci pour vos conseils.
Commenter la réponse de zikofs
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 17:51
0
Merci
le code quej'ai mis en haut ne marche pas
car je récupére pas bien le nom du fichier XML qui est sur le textbox par doc1.Load(""+textBOX1+"");
aidez moi à me sortir de ce pepin.
Commenter la réponse de zikofs
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 25 avril 2006 à 09:55
0
Merci
doc1.Load("'" + textBox1.Text+"'");
en fait je voulais charger le chemin du fichier XML qui est entré dans le textbox1 mais ça marche pas.
merci beaucoup pour m'avoir répondu .
Commenter la réponse de zikofs
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 25 avril 2006 à 11:27
0
Merci
merci beaucoup pour vous les gars.
j'ai encore un autre petit souci c'est que je développe une petite application pour un pda le probléme c'est que je quand je remplis les données d'un formulaire correspondant aux données du fichier xml que m'a filé le coq , il ya un bouton enregistrer qui crée le fichier xml avec les données s'il n'est pas crée sinon il ajoute les données entrées dans le formulaire au fichier xml.
mon problème c'est que je peux pas accéder au fichier crée dans l'emulateur pour voir sa structure.
voici le code que j'ai fait mais qui marche pas:
étape 1:
XmlTextWriter xtw;
try
{
xtw = new XmlTextWriter("\\test.xml", System.Text.Encoding.UTF8);
xtw.Formatting = Formatting.Indented;
xtw.Indentation = 4;
xtw.WriteStartDocument(true);
xtw.WriteStartElement("Deplacements");
xtw.WriteElementString("date", dateTimePicker1.Text);
xtw.WriteElementString("villed", textBox1.Text);
xtw.WriteElementString("villea", textBox2.Text);
xtw.WriteElementString("km", textBox3.Text);
xtw.WriteElementString("typed", comboBox1.Text);
xtw.WriteElementString("com", textBox5.Text);
xtw.WriteEndElement();
xtw.Flush();
xtw.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
étape 2:
try
{
DataSet ds = new DataSet();
ds.ReadXml("\\test.xml");
// c'est plus simple comme ça .. enfin tu fais comme tu veux
DataRow row = ds.Tables[0].NewRow();
//Ajout des valeurs dans la table.
row["Date"] = dateTimePicker1.Text;
row["Villed"] = textBox1.Text;
row["villea"] = textBox2.Text;
row["km"] = textBox3.Text;
row["typed"] = comboBox1.Text;
row["com"] = textBox5.Text;
ds.Tables[0].Rows.Add(row);
ds.WriteXml("\\test.xml");
Form1 fm1 = new Form1();
fm1.Form1_Load(sender, e);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
{
}
}
Commenter la réponse de zikofs
t_barbillon 341 Messages postés mercredi 8 juin 2005Date d'inscription 10 février 2009 Dernière intervention - 25 avril 2006 à 16:46
0
Merci
Pour t'aider il faudrait avoir plus d'infos que "ça ne marche pas", comme par exemple la ligne de code qui lève l'exception, ou encore l'exception levée.
Commenter la réponse de t_barbillon
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 25 avril 2006 à 17:11
0
Merci
en fait j'ai un formulaire et un bouton enregistrer
j'aimerais que lorsque je clique sur le bouton enregistrer de créer un fichier xml
avec les données du formulaire dedans et si il est crée de lui ajouter les données du formulaire.
le fichier xml j'aimerais l'avoir comme ca:
<?xml version="1.0" encoding="utf-8" ?>
<deplacements>
<deplacement>
<date>01/01/01</date>
<villed>A</villed>
<villea>B</villea>
<km>200</km>
<typed />
<com />
</deplacement>
<deplacement>
<date>02/02/02</date>
<villed>B</villed>
<villea>A</villea>
<km>100</km>
<typed />
<com />
</deplacement>
</deplacements>

le problème c'est que le code que j'ai mis en haut marche mais apès quelques traitements dans le fichier xml , le fichier est bloqué et n'affiche pas les enregistrements qu'il ya dedans.
aidez moi à me sortir de ce problème.
Commenter la réponse de zikofs

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.