Navigation dans xml [Résolu]

- - Dernière réponse : biolo24fr
Messages postés
87
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
28 mai 2013
- 21 mai 2013 à 15:16
Bonjour

Je voudrais naviguer dans mon xml avec un bouton et a chaque fois que l'on appuie sur le bouton on change de nœud

Voici un bout de code qui ne marche que pour afficher le premier nœud.
Je pense qu'il faut mette une boucle ou utiliser le xPath :

  XElement xelement = XElement.Load("..\\..\\Employees.xml");
                 IEnumerable<XElement> employees = xelement.Elements();
            
                foreach (var employee in employees)
                 {
                     this.lbl_question.Text = employee.Element("Name").Value + employee.Element("EmpId").Value;

                 }


voici mon xml :
<?xml version="1.0" encoding="utf-8" ?>

  
    1
    <Name>Sam</Name>
    <Sex>Male</Sex>
    423-555-0124


    424-555-0545


    
      <Street>7A Cox Street</Street>
      <City>Acampo</City>
      <State>CA</State>
      <Zip>95220</Zip>
      <Country>USA</Country>
    
  
  
    2
    <Name>Lucy</Name>
    <Sex>Female</Sex>
    143-555-0763


    434-555-0567


    
      <Street>Jess Bay</Street>
      <City>Alta</City>
      <State>CA</State>
      <Zip>95701</Zip>
      <Country>USA</Country>
    
  


Je voudrais afficher Sam puis quand je clique sur le bouton Lucy s'affiche dans le label
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
87
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
28 mai 2013
1
3
Merci
Salut,

Tu peux utiliser ça :

XmlTextReader reader = new XmlTextReader(@"..\\..\\Employees.xml");
XmlDocument xml = new XmlDocument();
xml.Load(reader);
XmlNodeList xnList = xml.SelectNodes("/Employees/Employee");

{...}
//ensuite avec ton switch par exemple  compteur =1 -->0 pour Sam, 1 pour Lucie

XmlNode noeud = xnList.Item(compteur); // on récupère le deuxième noeud Lucie 
this.lbl_question.Text  = noeud.SelectNodes("Name").Item(0).InnerText; //Valeur




-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 125 internautes nous ont dit merci ce mois-ci

Commenter la réponse de biolo24fr
Messages postés
13634
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 août 2019
298
0
Merci
Bonsoir,

perso je chargerais tout dans une List<T> avec Linq un peu comme tu fais, d'une classe adaptée à tes contacts.
J'utiliserais cette liste en datasource d'un objet databindingsource et me servirais des boutons pour naviguer dans cet objet.
Enfin si tu es en windows form, pour le databindingsource.


Whismeril
Commenter la réponse de Whismeril
0
Merci
Je suis bien en windows form. Merci de ta réponse je vais voir pour les List<T>.
Mais liste en datasource d'un objet databindingsource ne va pas correspondre a ma solution.

Je veux simplement afficher le xml dans un label comme je vais recevoir plein de fichier xml via mon serveur.

J'ai un peu avancé je vais mettre un switch avec un compteur.
Le compteur le voici
 grp_box_orientation.Text = compteur.ToString();
            compteur = Int32.Parse(grp_box_orientation.Text);
            grp_box_orientation.Text = "Question " + compteur++.ToString();


puis je le met dans un switch
 switch (compteur)
            {
                case 1:

//ici il faut que je met du code qui va lire la valeur du premier nœud                     
                    break;
                case 2:
 //ici il faut que je met du code qui va lire la valeur du second nœud
                    break;
            }
Commenter la réponse de thefolin