Navigation dans xml

Résolu
thefolin - 19 mai 2013 à 21:16
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

3 réponses

biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
21 mai 2013 à 15:16
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.
3
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
20 mai 2013 à 00:08
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
0
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;
            }
0
Rejoignez-nous