Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] xml et android

sous noeud ?

Anonyme
    17 août 2012 à 18:18:13

    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 :
    <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 :
    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 :
    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é :
    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 :
    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.
    • Partager sur Facebook
    • Partager sur Twitter
      21 août 2012 à 12:00:46

      Bonjour,

      J'ai rajouté le tag dans le titre de ton sujet afin qu'il soit conforme aux règles du forum "Mobile". Merci de faire attention à l'avenir.
      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.

      [Android] xml et android

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown