Navigation dans xml [Résolu]

- - Dernière réponse : biolo24fr
Messages postés
87
Date d'inscription
jeudi 16 janvier 2003
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 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
87
Date d'inscription
jeudi 16 janvier 2003
Dernière intervention
28 mai 2013
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 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de biolo24fr
Messages postés
12415
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
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

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.