IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Récupérer la valeur d'un noeud.


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Points : 47
    Points
    47
    Par défaut Récupérer la valeur d'un noeud.
    Bonjour.
    Mon fichier xml est de ce type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <xml>
      <noeud>
        <noeud>
          <noeuda>valeur</noeuda>
          <noeudb>valeur</noeudb>
          <noeudc>valeur</noeudc>
        </noeud>
        <noeud>
          <noeuda>valeur</noeuda>
          <noeudb>valeur</noeudb>
          <noeudc>valeur</noeudc>
        </noeud>
        <noeud>
          <noeuda>valeur</noeuda>
          <noeudb>valeur</noeudb>
          <noeudc>valeur</noeudc>
        </noeud>
        .
        .
        .
        .
      </noeud>
    </xml>
    Je cherche à récupérer la valeur de mon "noeudc" dans mon "<noeud></noeud>" choisit au hasard via un random.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    document.Load(monfichierxml);
    XmlNodeList list1 = document.DocumentElement.SelectNodes("/xml/noeud");
    int a = list1.Count; // je compte le nombre de <noeud></noeud>
    Random random = new Random();
    int randoma = random.Next(0, a - 1); // je détermine un index de noeud au hasard.
    XmlNodeList list2 = list1[randoma].ChildNodes; // je récupére les noeud enfants (noeuda,noeudb,noeudc) du noeud choisi
    Et c'est la que je coince je sais pas comment récupérer la valeur de mon noeudc...
    J'essaye ça : string mavaleur = list2[3].InnerXml; mais ça fonctionne pas.

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Points : 713
    Points
    713
    Par défaut
    Salut!!

    Modifie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string mavaleur = list2[3].InnerXml;
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string mavaleur = list2[2].InnerXml;

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Points : 47
    Points
    47
    Par défaut
    oui mais non.
    Ca marche pas quand même
    j'ai mis noeuda noeudb noeudc mais j'en ai 20 comme ça au pire ça m'aurais sorti le noeud d'apres comme valeur.

  4. #4
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Points : 713
    Points
    713
    Par défaut
    Ce qui impliquerait que list2.cout est égale à 20!
    Bizarre, il devrait tout de même te renvoyer les noeuds enfant de noeud

    Edit : Autant pour moi, tu n'es pas dans le sous-noeud de noeud, il suffit de modifier la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNodeList list1 = monXml.DocumentElement.SelectNodes("/xml/noeud/noeud");

  5. #5
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach(XmlNode node in  list1[randoma].ChildNodes)
                  if(node.Name="noeudc")
    //c ok

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Salut,
    sinon moi je propose ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    string path = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\test.xml";
                DataSet ds = new DataSet();
                ds.ReadXml(path); //chargement du xml dans le DataSet
     
     
                DataTable noeudPrincipal = ds.Tables[0];
     
                int nbNoeuds = noeudPrincipal.Rows.Count; //Nombre de noeuds
                bool exit = false;
                while (!exit)
                {
                    int nbRandom = new Random().Next(1, nbNoeuds);// Choix d'un noeud
     
                    DataRow noeudX = noeudPrincipal.Rows[nbRandom]; //On récupère le noeud choisi au hasard
     
                    string vA = noeudX["noeuda"].ToString();
                    string vB = noeudX["noeudb"].ToString();
                    string vC = noeudX["noeudc"].ToString();
     
                    Console.WriteLine("index = {0}    vA = {1}  vB = {2}  vC = {3}", nbRandom, vA, vB, vC);
                    string ret = Console.ReadLine();
                    exit = ret == "stop";
     
                }
    Ce bout de code montre comment charger ton fichier xml dans un DataSet. Pour moi qui manipule des DataTables toute la journée (Sql & Ci ) c'est assez pratique je trouve je retrouver le même environnement.

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par azstar Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach(XmlNode node in  list1[randoma].ChildNodes)
                  if(node.Name="noeudc")
    //c ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    document.Load(monfichierxml);
    XmlNodeList list1 = document.DocumentElement.SelectNodes("/xml/noeud");
    int a = list1.Count; // je compte le nombre de <noeud></noeud>
    Random random = new Random();
    int randoma = random.Next(0, a - 1); // je détermine un index de noeud au hasard.
    foreach (XmlNode node in list1[randoma].ChildNodes)
    {
      string mavaleur = node.SelectSingleNode("noeudc").InnerXml;
    }
    Comme ça ça marche ! merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] Récupérer la valeur d'un noeud XML
    Par sheira dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/11/2010, 10h45
  2. [XPath] Récupérer la valeur d'un noeud cousin ?
    Par leeloo64 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 31/03/2009, 15h57
  3. Récupérer la valeur d'un noeud XML
    Par Tchupacabra dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/06/2008, 10h23
  4. [C#-XML] Récupérer les valeurs des noeuds enfants
    Par cyllix dans le forum Windows Forms
    Réponses: 1
    Dernier message: 23/06/2006, 11h54
  5. Récupérer les valeurs d'un noeud dans un fichier XML
    Par yosthegost dans le forum Delphi
    Réponses: 1
    Dernier message: 30/05/2006, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo