IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Compatibilité méthode java DOM sur Android ?


Sujet :

Android

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 140
    Par défaut Compatibilité méthode java DOM sur Android ?
    J'ai un souci, avec DOM, la méthode getTextContent foctionne très bien en projet java simple. Mais sur Android ça plante quand je fais :
    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
    32
    33
    34
    35
    36
    37
    38
     
     
    try {
     
    				  File file = new File(incidentsInSD);
    				  DocumentBuilderFactory dbf = 
    				  DocumentBuilderFactory.newInstance();
    				  DocumentBuilder db = dbf.newDocumentBuilder();
    				  Document document = db.parse(file);
    				  document.getDocumentElement().normalize();
     
    				  NodeList node = document.getElementsByTagName("incidents");
     
    				  Node nodee = node.item(0);
     
    				 Element el = (Element) nodee;
     
    				 NodeList NombreMenus = el.getElementsByTagName("menu");
     
    				 Node nodeee = NombreMenus.item(0);
     
    				 Element ell = (Element) nodeee;
     
    				NamedNodeMap nnm = ell.getAttributes();
     
    				Node s = nnm.getNamedItem("nom");
     
    				String s2 = s.getTextContent(); // Affichage dans TextView
     
    				AfficheInfos.setText((CharSequence) s);
     
     
     
     
     
    			 } catch (Exception e) {
    				    e.printStackTrace();
    				  }

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 140
    Par défaut
    Je pense que le problème vient de LireMenu et LireIncident, sur Android ça plante ..
    Logcat :

    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
     
     
     
    05-18 10:10:47.152: ERROR/AndroidRuntime(3649): Uncaught handler: thread main exiting due to uncaught exception
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649): java.lang.NoSuchMethodError: org.w3c.dom.Node.getTextContent
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at com.android.webtrack.AccueilActivity.LireIncident(AccueilActivity.java:991)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at com.android.webtrack.AccueilActivity.LireMenu(AccueilActivity.java:968)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at com.android.webtrack.AccueilActivity.AfficherAnomalies(AccueilActivity.java:887)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at com.android.webtrack.AccueilActivity.onActivityResult(AccueilActivity.java:753)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at android.app.Activity.dispatchActivityResult(Activity.java:3837)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3325)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3371)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at android.app.ActivityThread.access$2700(ActivityThread.java:119)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1893)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at android.os.Handler.dispatchMessage(Handler.java:99)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at android.os.Looper.loop(Looper.java:123)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at android.app.ActivityThread.main(ActivityThread.java:4363)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at java.lang.reflect.Method.invokeNative(Native Method)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at java.lang.reflect.Method.invoke(Method.java:521)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649):     at dalvik.system.NativeStart.main(Native Method)

  3. #3
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Ton problème est bien signalé ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    05-18 10:10:47.152: ERROR/AndroidRuntime(3649): Uncaught handler: thread main exiting due to uncaught exception
    05-18 10:10:47.157: ERROR/AndroidRuntime(3649): java.lang.NoSuchMethodError: org.w3c.dom.Node.getTextContent
    Le message d'erreur t'informe qu'il ne trouve pas de méthode getTextContent().

    Donc quelle API utilises-tu pour tester ton application ?

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 140
    Par défaut
    J'utilise DOM pour parser le XML, tu veux quoi de plus ?
    (Désole si je ne comprends pas)

  5. #5
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 245
    Par défaut
    L'API c'est indiqué dans :
    default.properties et dans Project Build Target.
    Ou alors c'est la version d'Android de l'émulateur ou du téléphone que t'utilise pour faire les tests.

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Non c'est pas ce que je voulais .

    Je voulais savoir quelle API tu utilisais , c'est-à-dire quelle version d'Android (1.5,1.6,...,2.3) utilises-tu pour ton émulateur ou ton device.

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 140
    Par défaut
    Ouais sur le téléphone.

    J'ai API Level 7 et là je viens de voir :

    http://code.google.com/p/android/issues/detail?id=1897

    " It is implemented in Android 2.2+ (API level 8+) " .

    En gros, c'est mort ? ^^

  8. #8
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 245
    Par défaut
    Ben je sais pas comment tu fais, mais moi je parse depuis l'API 5 (je pense que ça passe même avant puisque DocumentBuilder c'est since API Level 1).

    http://developer.android.com/referen...ntBuilder.html

    T'as pas besoin de getText() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Element eTitre = (Element) entry.getElementsByTagName("titre").item(0);
    String sTitre = eTitre.getFirstChild().getNodeValue();

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 140
    Par défaut
    Je pense que vu plusieurs personnes ont le problème sur getTextContent, je pense que ça vient de cette méthode, plutôt que de DocumentBuilder.

  10. #10
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    N'hésite pas à aller voir directement sur la documentation d'android.
    http://developer.android.com/referen...tContent%28%29

    Oui c'est bien l'API 8 . Donc tu ne peux pas utiliser cette méthode (getTextContent()) pour ton téléphone .

    Passes plutôt par cette fonction:

    public abstract String getNodeValue ()
    Since: API Level 1

    The value of this node, depending on its type; see the table above. When it is defined to be null, setting it has no effect, including if the node is read-only.
    Throws
    DOMException DOMSTRING_SIZE_ERR: Raised when it would return more characters than fit in a DOMString variable on the implementation platform.

  11. #11
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 245
    Par défaut
    Oui c'est donc pour ça que je disais, que je ne comprenais pas comment tu faisais et que tu n'as pas besoin de getTextContent().

  12. #12
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 140
    Par défaut
    D'accord on se comprends désormais ^^

  13. #13
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 140
    Par défaut
    Un grand merci à vous les gars. Car vu la complexité de ma classe, je me voyais mal la refaire avec un autre parser. Au début je pensais que ça venait de ça.

    Merci beaucoup, ça fonctionne, RESOLU !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compatibilité code Java vers Android
    Par jojo_ol76 dans le forum Android
    Réponses: 2
    Dernier message: 16/11/2011, 12h56
  2. code fonctionne sur Projet Java, Pas sur Android
    Par frAydjwe dans le forum Android
    Réponses: 0
    Dernier message: 19/05/2011, 17h53
  3. Réponses: 6
    Dernier message: 24/03/2009, 16h17
  4. Utilisation d'une méthode Java sur un bouton HTML
    Par Corlo dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 29/10/2007, 14h53
  5. [Java Webservice] sur JBoss méthodes surchargées
    Par smutmutant2003 dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 05/06/2007, 15h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo