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 :
sans succès donc j'ai testé :
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(); }
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 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(); }
Merci d'avance.
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)
Partager