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 :

lire un fichier XML avec des noeuds, enfants, etc


Sujet :

C#

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut lire un fichier XML avec des noeuds, enfants, etc
    bonjour, j'ai un petit problème avec la lecture d'un fichier XML. je suis habitué à utiliser des fichiers XML simples, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <employee>
            <name>John Doe</name>
            <age>43</age>
            <sex>M</sex>
            <department>Exploitation</department>
    </employee>
    maintenant je dois apprendre à lire ce genre de fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <employee id="15482" id2="4558">
            <name>John Doe</name>
            <age DateDeNaissance="XX/XX/XXXX">43</age>
            <sex>M</sex>
            <department codeDep="16">Exploitation</department>
    </employee>
    enfin voilà, c'est pas la meme chose ^^
    j'ai pas écris un jeu d'essai cohérent, mais le principe est là.
    pourriez-vous m'aider svp ?

    j'ai l'habitude d'utiliser ce genre de procédé :

    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
     
    public void Chargement(string unFichier)
    {
                ClObjet unObjet = null;
     
                XPathDocument doc = new XPathDocument(unFichier);
                XPathNavigator nav = doc.CreateNavigator();
     
                // on cré les objets
                XPathNodeIterator RecObjets = nav.Select("listeObjets/unObjet ");
                while (RecObjets.MoveNext())
                {
                    string codeObjet = RecObjets.Current.SelectSingleNode("codeObjet").Value;
                    string nomObjet = RecObjets.Current.SelectSingleNode("nomObjet").Value;
     
                    unObjet = new ClObjet(codeObjet, nomObjet);
                    AjoutObjet(unObjet);
                }
    }

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Premier post à 13h03 ... et plainte à 14h23 qu'on est pas assez réactifs ?

    Bon courage pour obtenir une réponse maintenant.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    bon alors je reprécise ^^
    j'aimerais lire un fichier XML assez complexe, avec des noeuds et des enfants.
    pour le moment je suis habitué au fichier XML simples.

    qui peut me dire comment je peux acceder aux infos comme id="15482" dans employee, ou encore codeDep="16" dans department ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <employee id="15482" id2="4558">
            <name>John Doe</name>
            <age DateDeNaissance="XX/XX/XXXX">43</age>
            <sex>M</sex>
            <department codeDep="16">Exploitation</department>
    </employee>
    j'espère que vous pourrez m'indiquer une méthode, car moi je suis au point mort lol
    sur ce coup làa, google n'est pas très coopératif, comme quoi c'est pas toujours un ami ^^

    merci pour votre aide

  5. #5
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut
    Commence par regarder ce tutoriel

    http://jfdeterme.developpez.com/tuto...rp/tuto_xpath/

  6. #6
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    merci mais ça ne colle pas trop avec mon besoin.
    vois-tu, dans ce tutoriel on cherche un noeud en fonction de la valeur de son attribut.

    moi je dois lire le fichier xml ! pas l'interroger !
    par exemple, pour la liste des employées, je les fais 1 par 1 en prélevant leurs ID, leur date de naissance et tout ...
    je ne cherche personne en fonction de leurs critères.

    une fois que j'ai mes infos, je les enregistre dans mes collections d'objets en c# et voilà ^^

    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
     
    <lesEmployees>
    	<employee id="15482" id2="82826">
           	 	<name>John Doe</name>
           	 	<age DateDeNaissance="XX/XX/XXXX">43</age>
            	<sex>M</sex>
          	  	<department codeDep="16">Exploitation</department>
    	</employee>
    	<employee id="96363" id2="8266">
           	 	<name>jar jar binks</name>
           	 	<age DateDeNaissance="XX/XX/XXXX">17</age>
            	<sex>M</sex>
          	  	<department codeDep="16">Exploitation</department>
    	</employee>
    </lesEmployees>
    jusque là je vous ai montré des exemples simplifiés, mais pour que vous puissiez comprendre, je vous montre le fichier XML que je dois lire en réalité :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <weather ver="2.0">
      <head>
        <locale>en_US</locale>
        <form>MEDIUM</form>
        <ut>F</ut>
        <ud>mi</ud>
        <us>mph</us>
        <up>in</up>
        <ur>in</ur>
      </head>
      <loc id="FRXX0046">
        <dnam>Le Grand-Quevilly, France</dnam>
        <tm>11:05 AM</tm>
        <lat>49.41</lat>
        <lon>1.05</lon>
        <sunr>7:15 AM</sunr>
        <suns>8:34 PM</suns>
        <zone>2</zone>
      </loc>
      <cc>
        <lsup>9/3/09 10:00 AM Local Time</lsup>
        <obst>Rouen, FRANCE</obst>
        <tmp>59</tmp>
        <flik>59</flik>
        <t>Partly Cloudy</t>
        <icon>30</icon>
        <bar>
          <r>29.68</r>
          <d>rising</d>
        </bar>
        <wind>
          <s>21</s>
          <gust>N/A</gust>
          <d>250</d>
          <t>WSW</t>
        </wind>
        <hmid>77</hmid>
        <vis>6.2</vis>
        <uv>
          <i>1</i>
          <t>Low</t>
        </uv>
        <dewp>52</dewp>
        <moon>
          <icon>13</icon>
          <t>Waxing Gibbous</t>
        </moon>
      </cc>
      <dayf>
        <lsup>9/3/09 7:23 AM Local Time</lsup>
        <day d="0" t="Thursday" dt="Sep 3">
          <hi>66</hi>
          <low>53</low>
          <sunr>7:15 AM</sunr>
          <suns>8:34 PM</suns>
          <part p="d">
            <icon>11</icon>
            <t>AM Light Rain / Wind</t>
            <wind>
              <s>21</s>
              <gust>N/A</gust>
              <d>260</d>
              <t>W</t>
            </wind>
            <bt>AM Rain/Wind</bt>
            <ppcp>70</ppcp>
            <hmid>69</hmid>
          </part>
          <part p="n">
            <icon>11</icon>
            <t>Light Rain Late</t>
            <wind>
              <s>17</s>
              <gust>N/A</gust>
              <d>235</d>
              <t>SW</t>
            </wind>
            <bt>Rain Late</bt>
            <ppcp>80</ppcp>
            <hmid>79</hmid>
          </part>
        </day>
        <day d="1" t="Friday" dt="Sep 4">
          <hi>65</hi>
          <low>54</low>
          <sunr>7:16 AM</sunr>
          <suns>8:32 PM</suns>
          <part p="d">
            <icon>12</icon>
            <t>Rain / Wind</t>
            <wind>
              <s>21</s>
              <gust>N/A</gust>
              <d>281</d>
              <t>W</t>
            </wind>
            <bt>Rain/Wind</bt>
            <ppcp>80</ppcp>
            <hmid>71</hmid>
          </part>
          <part p="n">
            <icon>24</icon>
            <t>Partly Cloudy / Wind</t>
            <wind>
              <s>19</s>
              <gust>N/A</gust>
              <d>278</d>
              <t>W</t>
            </wind>
            <bt>P Cldy/Wind</bt>
            <ppcp>20</ppcp>
            <hmid>72</hmid>
          </part>
        </day>
        <day d="2" t="Saturday" dt="Sep 5">
          <hi>67</hi>
          <low>50</low>
          <sunr>7:18 AM</sunr>
          <suns>8:30 PM</suns>
          <part p="d">
            <icon>30</icon>
            <t>Partly Cloudy</t>
            <wind>
              <s>13</s>
              <gust>N/A</gust>
              <d>295</d>
              <t>WNW</t>
            </wind>
            <bt>P Cloudy</bt>
            <ppcp>20</ppcp>
            <hmid>67</hmid>
          </part>
          <part p="n">
            <icon>29</icon>
            <t>Partly Cloudy</t>
            <wind>
              <s>5</s>
              <gust>N/A</gust>
              <d>271</d>
              <t>W</t>
            </wind>
            <bt>P Cloudy</bt>
            <ppcp>0</ppcp>
            <hmid>79</hmid>
          </part>
        </day>
      </dayf>
    </weather>

  7. #7
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 131
    Points : 158
    Points
    158
    Par défaut
    Bonjour

    Généralement les données que tu veux lire s'appelle des attributs du noeud.

    Tu peux utiliser pour ça l'objet XMlDocument qui contient l'objet XMLNode, et dans chaque objet XmlNode y a une collection des XmlNode, donc t'aura tout ton arbre avec ça, l'objet XmlNode contient aussi une collection d'attributs (les information Id et id2).

  8. #8
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    merci beaucoup
    maintenant je sais au moins quels mots clés je peux utiliser ^^
    je pense que je vais pouvoir avancer !

    je vous tiens au courant !

  9. #9
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 131
    Points : 158
    Points
    158
    Par défaut
    Bon Courage

  10. #10
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    je ne trouve quedal >_<
    c'est incroyable, ya pourtant des tuto traitant mon problème quelque part !!
    comment font les gens pour apprendre a manipuler le XML ??

    bon, je continue à chercher.

  11. #11
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Salut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <employee id="15482" id2="4558">
            <name>John Doe</name>
            <age DateDeNaissance="XX/XX/XXXX">43</age>
            <sex>M</sex>
            <department codeDep="16">Exploitation</department>
    </employee>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Create your XPath document
    XPathDocument xDocument = new XPathDocument("yourFile.xml");
    XPathNavigator xNavigator = xDocument.CreateNavigator();
     
    // Employee and id
    XPathNavigator tempNavigator = xNavigator.SelectSingleNode("employee");
    Console.WriteLine(tempNavigator.GetAttribute("id", string.Empty)); 
     
    // DateDeNaissance and age
    tempNavigator = xNavigator.SelectSingleNode("employee/age");
    Console.WriteLine(tempNavigator.Value); 
    Console.WriteLine(tempNavigator.GetAttribute("DateDeNaissance", string.Empty));
    Ça donne :
    Voilà... à toi désormais de t'amuser avec XPath ou autre chose

  12. #12
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 131
    Points : 158
    Points
    158
    Par défaut
    Bonjour

    voici un exemple d'utilisation du XmlDocument, j'esépre que ça va t'aider :

    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
    26
    27
    String xml = @"<lesEmployees><employee id='15482' id2='82826'><name>John Doe</name><age DateDeNaissance='XX/XX/XXXX'>43</age><sex>M</sex><department codeDep='16'>Exploitation</department></employee><employee id='96363' id2='8266'><name>jar jar binks</name><age DateDeNaissance='XX/XX/XXXX'>17</age><sex>M</sex><department codeDep='16'>Exploitation</department></employee></lesEmployees>";
     
     
                XmlDocument xmldocument = new XmlDocument();
     
                xmldocument.LoadXml(xml);
     
     
                XmlNodeList results = xmldocument.SelectNodes("/lesEmployees/employee");
     
     
                foreach (XmlNode OneNode in results)
                {
                    Console.Out.WriteLine("Employé");
     
                    Console.Out.WriteLine("Id  : "+OneNode.Attributes["id"].Value);
                    Console.Out.WriteLine("Id2  : " + OneNode.Attributes["id2"].Value);
     
                    Console.Out.WriteLine("Name : " + OneNode.ChildNodes[0].InnerText);
     
                    Console.Out.WriteLine("Age : " + OneNode.ChildNodes[1].InnerText);
                    Console.Out.WriteLine("Date Naissance : " + OneNode.ChildNodes[1].Attributes[0].Value);
     
                }
     
     
                Console.ReadKey();
    et ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Employé
    Id  : 15482
    Id2  : 82826
    Name : John Doe
    Age : 43
    Date Naissance : XX/XX/XXXX
    Employé
    Id  : 96363
    Id2  : 8266
    Name : jar jar binks
    Age : 17
    Date Naissance : XX/XX/XXXX
    Regarde aussi coté Linq to XMl , c'est même plus simple

    tien moi au courant des nouveautés

  13. #13
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    merci infiniment
    je vais essayer ça, je reviendrais ce soir avec le résultat ^^

  14. #14
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    bon voilà, j'ai pas mal avancé dans mon code.
    mais j'aimerais revenir sur un détail.
    vous utilisez XmlDocument alors que j'ai l'habitude d'utiliser XPathDocument.
    et je ne sais pas pourquoi, mais la commande SelectNodes ne fonctionne pas avec XPathDOcument ><

    voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String xml = @"<lesEmployees><employee id='15482' id2='82826'><name>John Doe</name><age DateDeNaissance='XX/XX/XXXX'>43</age><sex>M</sex><department codeDep='16'>Exploitation</department></employee><employee id='96363' id2='8266'><name>jar jar binks</name><age DateDeNaissance='XX/XX/XXXX'>17</age><sex>M</sex><department codeDep='16'>Exploitation</department></employee></lesEmployees>";
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);
     
                XmlNodeList resultsLOC = doc.SelectNodes("/weather/loc");
    donc, au lieu de mettre mon fichier xml dans une variable string, j'aimerais cherger le fichier avec un XPathDocuement.
    serait-ce possible ??

    merci pour tout ^^

  15. #15
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 131
    Points : 158
    Points
    158
    Par défaut
    Salut !!

    tu veux dire que tu veux charger le XmlDocuement à partir d'un fichier situé sur ton disque dur ? Si c'est oui alors il faut utiliser la méthode Load cette fois ci en passant le filename du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     XmlDocument xmldocument = new XmlDocument();
     
    xmldocument.Load("c:\\monficher.xml");

    Ah oui, cela dis j'ai une petite question a mon tour , les données météorologiques que tu veux traiter, tu les récupère depuis un service web, non ?

  16. #16
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    oui bien sur, je les récupère sur un site internet.
    je télécharge le fichier sur le disque dur et je le consulte. a vrai dire je n'ai pas trouvé de moyen de le consulter en ligne, sans le copier sur le disque dur, mais bon, ça marchera quand même ^^

    merci pour l'astuce

  17. #17
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    voici mon code, il marche à peu prêt bien ^^

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    public void ChargementBulletin(string unFichier)
            {
                DateTime DateActuelle = DateTime.Now;
                ClDate uneDate = null;
                ClVille laVille = null;
                ClCiel leCiel = null;
     
                string DateBulletin = null;
                string codeVilleXML = null;
                string leverSoleil = null;
                string coucherSoleil = null;
                string vitesseVent = null;
                string directionVent = null;
                string tauxHumidite = null;
     
                XmlDocument doc = new XmlDocument();
                doc.Load(unFichier);
     
                XmlNodeList resultsLOC = doc.SelectNodes("/weather/loc");
                foreach (XmlNode OneNodeLOC in resultsLOC)
                {
                    codeVilleXML = OneNodeLOC.Attributes["id"].Value; // code de la ville
                    leverSoleil = OneNodeLOC.ChildNodes[4].InnerText; // heure du lever de soleil
                    coucherSoleil = OneNodeLOC.ChildNodes[5].InnerText; // heure du coucher de soleil
     
                    MessageBox.Show(codeVilleXML + " + " + leverSoleil + " + " + coucherSoleil);
                }
     
                // DateActuelle !!
                // Bulletin météo actuel
                XmlNodeList resultsCC = doc.SelectNodes("/weather/cc");
                foreach (XmlNode OneNodeCC in resultsCC)
                {
                    string iconeCiel = OneNodeCC.ChildNodes[5].InnerText; // icone du ciel
     
                    XmlNodeList resultsWIND = doc.SelectNodes("/weather/cc/wind");
                    foreach (XmlNode OneNodeWIND in resultsWIND)
                    {
                        vitesseVent = OneNodeWIND.ChildNodes[0].InnerText; // vitesse du vent
                        directionVent = OneNodeWIND.ChildNodes[3].InnerText; // direction du vent
                    }
     
                    // A REVOIR !!
                    tauxHumidite = OneNodeCC.ChildNodes[8].InnerText; // taux d'humidité
     
                    MessageBox.Show(vitesseVent + " + " + directionVent + " + " + tauxHumidite);
                }
     
                string[] TabPartieJournee = { "d", "n" };
                int i = 0;
                int j = 0;
     
                // Les prévisions
                XmlNodeList resultsDAY = doc.SelectNodes("/weather/dayf/day");
                foreach (XmlNode OneNodeDAY in resultsDAY)
                {
                    XmlNodeList resultsPART = doc.SelectNodes("/weather/dayf/day/part");
                    foreach (XmlNode OneNodePART in resultsPART)
                    {
                        string iconeCiel = OneNodePART.ChildNodes[0].InnerText; // icone du ciel
     
                        XmlNodeList resultsWIND2 = doc.SelectNodes("/weather/dayf/day/part/wind");
                        foreach (XmlNode OneNodeWIND2 in resultsWIND2)
                        {
                            vitesseVent = OneNodeWIND2.ChildNodes[0].InnerText; // vitesse du vent
                            directionVent = OneNodeWIND2.ChildNodes[3].InnerText; // direction du vent
                        }
     
                        string tauxPrecipitation = OneNodePART.ChildNodes[0].InnerText; // taux de precipitations de la nuit
                        string tauxHaumidite = OneNodePART.ChildNodes[1].InnerText; // taux d'humidité de la nuit
     
                        MessageBox.Show(iconeCiel + " + " + vitesseVent + " + " + directionVent + " + " + tauxPrecipitation + " + " + tauxHaumidite); // dernier probleme ici !!!
                    }
                }
            }
    le problème restant ce situe au niveau du dernier messageBox.
    je devrais avoir une boucle de 6 répétitions, mais le messageBox bien trop souvent >_<

    voici de nouveau mon code XML :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!-- This document is intended only for use by authorized licensees of The  -->
    <!-- Weather Channel. Unauthorized use is prohibited.  Copyright 1995-2009, -->
    <!-- The Weather Channel Interactive, Inc.  All Rights Reserved.            -->
    <weather ver="2.0">
      <head>
        <locale>en_US</locale>
        <form>MEDIUM</form>
        <ut>F</ut>
        <ud>mi</ud>
        <us>mph</us>
        <up>in</up>
        <ur>in</ur>
      </head>
      <loc id="FRXX0046">
        <dnam>Le Grand-Quevilly, France</dnam>
        <tm>10:27 AM</tm>
        <lat>49.41</lat>
        <lon>1.05</lon>
        <sunr>7:16 AM</sunr>
        <suns>8:32 PM</suns>
        <zone>2</zone>
      </loc>
      <cc>
        <lsup>9/4/09 10:00 AM Local Time</lsup>
        <obst>Rouen, FRANCE</obst>
        <tmp>55</tmp>
        <flik>55</flik>
        <t>Light Drizzle</t>
        <icon>9</icon>
        <bar>
          <r>29.71</r>
          <d>steady</d>
        </bar>
        <wind>
          <s>9</s>
          <gust>N/A</gust>
          <d>280</d>
          <t>W</t>
        </wind>
        <hmid>94</hmid>
        <vis>6.2</vis>
        <uv>
          <i>1</i>
          <t>Low</t>
        </uv>
        <dewp>54</dewp>
        <moon>
          <icon>14</icon>
          <t>Full</t>
        </moon>
      </cc>
      <dayf>
        <lsup>9/4/09 7:22 AM Local Time</lsup>
        <day d="0" t="Friday" dt="Sep 4">
          <hi>65</hi>
          <low>52</low>
          <sunr>7:16 AM</sunr>
          <suns>8:32 PM</suns>
          <part p="d">
            <icon>12</icon>
            <t>Rain / Wind</t>
            <wind>
              <s>21</s>
              <gust>N/A</gust>
              <d>287</d>
              <t>WNW</t>
            </wind>
            <bt>Rain/Wind</bt>
            <ppcp>80</ppcp>
            <hmid>73</hmid>
          </part>
          <part p="n">
            <icon>45</icon>
            <t>Showers Early</t>
            <wind>
              <s>18</s>
              <gust>N/A</gust>
              <d>279</d>
              <t>W</t>
            </wind>
            <bt>Shwrs Early</bt>
            <ppcp>30</ppcp>
            <hmid>71</hmid>
          </part>
        </day>
        <day d="1" t="Saturday" dt="Sep 5">
          <hi>67</hi>
          <low>49</low>
          <sunr>7:18 AM</sunr>
          <suns>8:30 PM</suns>
          <part p="d">
            <icon>34</icon>
            <t>Mostly Sunny</t>
            <wind>
              <s>13</s>
              <gust>N/A</gust>
              <d>296</d>
              <t>WNW</t>
            </wind>
            <bt>M Sunny</bt>
            <ppcp>20</ppcp>
            <hmid>67</hmid>
          </part>
          <part p="n">
            <icon>29</icon>
            <t>Partly Cloudy</t>
            <wind>
              <s>10</s>
              <gust>N/A</gust>
              <d>276</d>
              <t>W</t>
            </wind>
            <bt>P Cloudy</bt>
            <ppcp>10</ppcp>
            <hmid>79</hmid>
          </part>
        </day>
        <day d="2" t="Sunday" dt="Sep 6">
          <hi>72</hi>
          <low>50</low>
          <sunr>7:19 AM</sunr>
          <suns>8:28 PM</suns>
          <part p="d">
            <icon>28</icon>
            <t>Mostly Cloudy</t>
            <wind>
              <s>8</s>
              <gust>N/A</gust>
              <d>189</d>
              <t>S</t>
            </wind>
            <bt>M Cloudy</bt>
            <ppcp>0</ppcp>
            <hmid>67</hmid>
          </part>
          <part p="n">
            <icon>29</icon>
            <t>Clouds Early / Clearing Late</t>
            <wind>
              <s>4</s>
              <gust>N/A</gust>
              <d>160</d>
              <t>SSE</t>
            </wind>
            <bt>Clear Late</bt>
            <ppcp>20</ppcp>
            <hmid>72</hmid>
          </part>
        </day>
      </dayf>
    </weather>
    où ai-je fais mon erreur ?? :s

  18. #18
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    j'ai cherché pendant des heures sur google, et je n'ai toujours pas trouvé de solution >_<
    je parie que plusieurs d'entre vous doivent avoir le même problème
    qui aurait une solution ? ^^

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Le problème est que tu recherche dans le document a chaque fois alors que tu devrait rechercher dans la node courante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNodeList resultsPART = doc.SelectNodes("/weather/dayf/day/part");
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNodeList resultsPART = OneNodeDAY.SelectNodes("/weather/dayf/day/part");
    Et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNodeList resultsWIND2 = doc.SelectNodes("/weather/dayf/day/part/wind");
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNodeList resultsWIND2 = OneNodePART.SelectNodes("/weather/dayf/day/part/wind");

    Edit : tu as faire la même erreur sur les foreach imbrique juste au dessus.

    Pour info, quand tu fais "doc.SelectNodes("/weather/dayf/day/part/wind");" tu vas sélectionner TOUTES les nodes correspondant a ce chemin.

  20. #20
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    j'ai corrigé, mais ca me fait toujours la même erreur
    merci quand même

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2010] Comment lire (ReadLine) un fichier XML avec des caractères accentués
    Par JFDAccess dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/01/2015, 07h37
  2. Réponses: 2
    Dernier message: 09/12/2009, 20h05
  3. Lire un fichier XML avec VBA
    Par Mouse dans le forum Général VBA
    Réponses: 1
    Dernier message: 15/06/2006, 19h56
  4. [XML] lire un fichier xml avec php
    Par java_fun dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 31/03/2006, 12h21

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