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#
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 !!
}
En gros je n'arrive pas a boucler sur les enfants d'un XMLIter
de plus si on fait ca :
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;
	}
On se retrouve avec toutes les options mais pas limitées à une voiture ce qui ne sert à rien.


Si vous avez une réponse,

Merci d'avance