Bonjour à tous,

J'ai un soucis je développe pour android 2.2 et j'ai réussit à lire un sous noeud de mon XML en boucle, le problème c'est lorsque je souhaite lire un sous - sous noeud il plante, pourtant c'est la même logique je vous donne le xml ainsi que le code qui pose soucis.

code XML :

Code xml : 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
<master>
    <mynode>
		<id>20120303789004526</id>
        <expediteur>
			<nom>jean luc</nom>
			<rue>15 rue lol</rue>
			<cp>15487</cp>
			<ville>LOIN</ville>
			<telephone>0415474487</telephone>
		</expediteur>
        <colis>
			<nombre>2</nombre>
			<paquet>
				<code_barre>8806071525143</code_barre>
				<taille>30*30*18</taille>
				<poids>0.86</poids>
			</paquet>
			<paquet>
				<code_barre>8806071532530</code_barre>
				<taille>20*40*20</taille>
				<poids>0.35</poids>
			</paquet>
		</colis>
        <destinataire>
			<nom>Jacques Lorien</nom>
			<rue>18 rue olli</rue>
			<cp>15487</cp>
			<ville>Malles</ville>
			<complement_adresse>Merci de déposer a l'accueil</complement_adresse>
			<telephone>0645874454</telephone>
			<portable>0611845678</portable>
		</destinataire>
    </mynode>
	<mynode>
		<id>20120303789008751</id>
        <expediteur>
			<nom>Sarl Tara</nom>
			<rue>25 rue Lothaire IV</rue>
			<cp>75000</cp>
			<ville>PARIS</ville>
			<telephone>0648914966</telephone>
		</expediteur>
        <colis>
			<nombre>4</nombre>
			<paquet>
				<code_barre>8806071524000</code_barre>
				<taille>30*30*30</taille>
				<poids>0.67</poids>
			</paquet>
			<paquet>
				<code_barre>8806071525000</code_barre>
				<taille>30*30*30</taille>
				<poids>0.85</poids>
			</paquet>
			<paquet>
				<code_barre>8806071526000</code_barre>
				<taille>30*30*30</taille>
				<poids>1.60</poids>
			</paquet>
			<paquet>
				<code_barre>8806071537000</code_barre>
				<taille>10*40*15</taille>
				<poids>0.39</poids>
			</paquet>
		</colis>
        <destinataire>
			<nom>Monsieur Pion Jean</nom>
			<rue>25 rue Très loin</rue>
			<cp>48540</cp>
			<ville>LA BAS</ville>
			<complement_adresse>Coucou</complement_adresse>
			<telephone>0358741112</telephone>
			<portable>0648745477</portable>
		</destinataire>
    </mynode>
	<mynode>
		<id>20120303789004789</id>
        <expediteur>
			<nom>M. DUPONT Jaques</nom>
			<rue>89 bld de la libération</rue>
			<cp>19548</cp>
			<ville>NICE</ville>
			<telephone>0559332567</telephone>
		</expediteur>
        <colis>
			<nombre>1</nombre>
			<paquet>
				<code_barre>8806071525000</code_barre>
				<taille>30*30*30</taille>
				<poids>0.90</poids>
			</paquet>
		</colis>
        <destinataire>
			<nom>Mme Cristophe Laisse</nom>
			<rue>80 rue de la paix</rue>
			<cp>75000</cp>
			<ville>PARIS</ville>
			<complement_adresse>Batiment E</complement_adresse>
			<telephone>0553819684</telephone>
			<portable>0612518798</portable>
		</destinataire>
    </mynode>
</master>

Le code pour lire l adresse de l expediteur qui fonctionne :
Code java : 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
xmlParse xmlP = new xmlParse();
				    xmlP.addressView();
 
				    String url = "http://www.mysite.ext/monXML.xml";
					String parentNode = "mynode"; // parent node
 
					int duration = Toast.LENGT
					XMLParser parser = new XMLParser();
					String xml = parser.getXmlFromUrl(url);
 
					Context context = getApplicationContext();
 
					Document doc = parser.getDomElement(xml);
// Ma node list contenant tous les infos des mynode
					NodeList nl = doc.getElementsByTagName(parentNode);
 
					for (int i = 0; i < nl.getLength(); i++) {
						Element e = (Element) nl.item(i);
 
// Recuperation des infos de la node
						String nom = parser.getValue(e, "nom");
						String rue = parser.getValue(e, "rue");
						String cp = parser.getValue(e, "cp");
						String ville = parser.getValue(e, "ville");
						String telephone = parser.getValue(e, "telephone");
						Toast toast = Toast.makeText(context, nom+" "+rue+" "+cp+" "+ville+" "+telephone, duration);
						toast.show();
 
 
 
					}


Mais j'aimerai maintenant a l'interieur de cette boucle lire toutes les nodes code_barre alors j'essaye :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
NodeList nl2 = nl.item(i).getChildNodes();
 
						for (int r = 0; r < nl2.getLength(); r++) {
 
							Element e2 = (Element) nl2.item(0);
							String cb = parser.getValue(e2, "code_barre");
 
							Toast toast2 = Toast.makeText(context, cb, duration);
							toast2.show();
						}
sans succès donc j'ai testé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
for (int z = 0; z < nl2.getLength(); z++) {
							Element e2 = (Element) nl.item(z);
 
								String cb = parser.getValue(e2, "code_barre");
 
								Toast toast2 = Toast.makeText(context, cb, duration);
								toast2.show();
						}
Toujours un plantage, voici le message dans le catlog :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
08-17 16:00:44.014: E/AndroidRuntime(609): FATAL EXCEPTION: main
08-17 16:00:44.014: E/AndroidRuntime(609): java.lang.ClassCastException: org.apache.harmony.xml.dom.TextImpl
08-17 16:00:44.014: E/AndroidRuntime(609): 	at com.example.livrexpress.MainActivity$4.onClick(MainActivity.java:133)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at android.view.View.performClick(View.java:2408)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at android.view.View$PerformClick.run(View.java:8816)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at android.os.Handler.handleCallback(Handler.java:587)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at android.os.Handler.dispatchMessage(Handler.java:92)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at android.os.Looper.loop(Looper.java:123)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at android.app.ActivityThread.main(ActivityThread.java:4627)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at java.lang.reflect.Method.invokeNative(Native Method)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at java.lang.reflect.Method.invoke(Method.java:521)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-17 16:00:44.014: E/AndroidRuntime(609): 	at dalvik.system.NativeStart.main(Native Method)
Merci d'avance.