Parcourir et ajouter à un fichier xml en C#

Fermé
le coin-coin Messages postés 66 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 29 novembre 2014 - 31 oct. 2008 à 10:42
le coin-coin Messages postés 66 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 29 novembre 2014 - 31 oct. 2008 à 12:58
Bonjour à tous,

Je souhaiterai récupérer les données d'un fichier xml en le parcourant en C#. J'aimerai également savoir comment ajouter des données dans ce fichier. J'ai suivi quelques tuto mais mais je ne les ai pas compris. Je ne sais pas quelles méthodes utiliser?

Voici la structure de mon fichier xml:

<taches>
<tache>
<numero>1</numero>
<titre>titre</titre>
<texte>texte</texte>
<date>30/10/08</date>
<heure>14h25</heure>
<tache>
....
....
</taches>


Et voila les premières lignes de mon code:

XmlDocument xmlTache = new XmlDocument();
xmlTache.Load(Application.StartupPath + "Taches.xml");


Par exemple: Comment récupérer les numéros des tâches?
Comment ajouter une tâche?
Comment gérer les nœuds?

Merci de votre aide!
A voir également:

4 réponses

Elx Messages postés 11 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 31 octobre 2008 71
31 oct. 2008 à 11:35
Salut

Les premières lignes de ton code sont exactes.
Voici ma méthode

1. Création et chargement du document xml
System.Xml.XmlDocument pDoc=new System.Xml.XmlDocument();
pDoc.load(Application.StartupPath + "Taches.xml");


2. Lecture du nœud de niveau 1: Taches
Dans ton document ce noeud est le premier, tu peux le récupérer avec la fonction:
System.Xml.XmlNode curNode=pDoc.DocumentElement;

3. Lecture des nœuds enfants
le nœud tache est enfant de <Taches> tu peux le récupérer avec le fonction SelectSingleNode:
System.Xml.XmlNode nextNode=curNode.SelectSingleNode("Tache");

4. Lecture d'une donnée du nœud: fonction innerText

On se connecte sur le noeud numero:
curNode=nextNode;
nextNode=curNode.SelectSingleNode("numero");

On lit la donnée avec la fonction innerText:
string data=nextNode.InnerText;

Je te post la suite...

Elx
http://www.artweweb.com/
22
Elx Messages postés 11 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 31 octobre 2008 71
31 oct. 2008 à 11:52
Ajouter un noeud au fichier xml

1. Création du noeud: CreateNode
La création d'un noeud se fait à partir de la variable System.Xml.XmlDocument
System.Xml.XmlDocument pDoc;
System.Xml.XmlNode newNode=pDoc.CreateNode(System.Xml.XmlNodeType.Element,NodeName,"");

pour créer un nouveau noeud "tache" il faut donc écrire:
System.Xml.XmlNode newNode=pDoc.CreateNode(System.Xml.XmlNodeType.Element,NodeName,"Tache");


2. Relier le nœud au nœud parent: AppendChild
Avec la fonction SelectSingleNode on récupère le noeud parent
System.Xml.XmlNode nextNode=curNode.SelectSingleNode("Tache");
La fonction AppendChild permet de rajouter un noeud enfant
nextNode.AppendChild(newNode)

3. Sauvegarde: Save
On sauvegarde le nouveau fichier avec la fonction System.Xml.XmlDocument.Save:
pDoc.Save("NomDuFichier.xml")

Elx
http://www.artweweb.com/
14
Elx Messages postés 11 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 31 octobre 2008 71
31 oct. 2008 à 12:06
Alternative pour la paramètre numéro

Je pense qu'il est préférable de placer le numéro de la tache dans un attribut de la balise:
<tache numero="1">
<titre>titre</titre>
<texte>texte</texte>
<date>30/10/08</date>
<heure>14h25</heure>
</tache>
<tache numero="2">
<titre>titre</titre>
<texte>texte</texte>
<date>30/10/08</date>
<heure>14h25</heure>
</tache>


Lorsque que tu crées la noeud tache, tu peux ajouter un attribut avec la fonction SetAttribute.
Pour la création du noeud, on peut utiliser la fonction CreateElement
Le code de création du noeud tache numéro 1 devient donc:
System.Xml.XmlDocument pDoc;
System.Xml.XmlNode newNode=pDoc.CreateElement("tache");
newNode.SetAttribute("numero","1");


Pour récupérer la valeur de l'attribut, tu peux utiliser la fonction GetAttribute:
string attribute=curNode.GetAttribute("numero");


Elx
http://www.artweweb.com/
8
le coin-coin Messages postés 66 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 29 novembre 2014 7
31 oct. 2008 à 12:58
Merci pour ces infos elles me seront très utiles!

Quelle boucle dois-je utiliser pour parcourir mon fichier xml? Avec quelle condition de sortie? Et enfin, comment afficher les données du document dans un ListView?

Merci de votre aide!
1