Navigation dans xml [Résolu]

thefolin - 19 mai 2013 à 21:16 - Dernière réponse : biolo24fr 87 Messages postés jeudi 16 janvier 2003Date d'inscription 28 mai 2013 Dernière intervention
- 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
biolo24fr 87 Messages postés jeudi 16 janvier 2003Date d'inscription 28 mai 2013 Dernière intervention - 21 mai 2013 à 15:16
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.

Merci biolo24fr 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de biolo24fr
Whismeril 12131 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 octobre 2018 Dernière intervention - 20 mai 2013 à 00:08
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.