Bonjour à tous, je vous écrit car j'ai un soucis pour la lecture d'un fichier XML et j'ai beau chercher, je ne trouve pas de solution.
Structure XML Exemple :
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 <Voitures> <Voiture> <marque>Renault</marque> <type>Megane</type> <Options> <Option> <numero>1</numero> <nom>Airbag</nom> </Option> <Option> <numero>2</numero> <nom>Autoradio MP3</nom> </Option> </Options> </Voiture> <Voiture> <marque>Peugeot</marque> <type>307</type> <Options> <Option> <numero>1</numero> <nom>Airbag</nom> </Option> <Option> <numero>2</numero> <nom>GPS</nom> </Option> </Options> </Voiture> </Voitures>
Fichier Source C#
En gros je n'arrive pas a boucler sur les enfants d'un XMLIter
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 XPathDocument XMLDoc = new XPathDocument(@"C:\test.xml"); XPathNavigator XMLNav = XMLDoc.CreateNavigator(); XPathNodeIterator XMLIter = null; XMLIter = XMLNav.Select("Voitures/Voiture"); while (XMLIter.MoveNext()) { //Ici je peux recuperer la marque et le type avec XMLIter.Current.SelectSingleNode("marque").value; XMLIter.Current.SelectSingleNode("type").value; //Mon gros Probleme se situe pour boucler sur les options car je peux recuperer l'option 1 comme ceci: XMLIter.Current.SelectSingleNode("Options/Option/numero").value; XMLIter.Current.SelectSingleNode("Options/Option/nom").value; //mais je n'arrive pas a boucler sur les options si je fais : XMLIter = XMLNav.Select("Options/Option"); while (XMLIter.MoveNext()) { XMLIter.Current.SelectSingleNode("numero").value; XMLIter.Current.SelectSingleNode("type").value; } //CA BUG !! }
de plus si on fait ca :
On se retrouve avec toutes les options mais pas limitées à une voiture ce qui ne sert à rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 XMLIter = XMLNav.Select("Voitures/Voiture/Options/Option"); while (XMLIter.MoveNext()) { XMLIter.Current.SelectSingleNode("numero").value; XMLIter.Current.SelectSingleNode("type").value; }
Si vous avez une réponse,
Merci d'avance
Partager