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 :

problème de parsage


Sujet :

Android

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut problème de parsage
    bonjour tout le monde

    je veux parser un simple document xml

    document xml: test.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0"?>
     
     
    <liens>
     
    <video>rtsp://10.0.2.2/fichierTest.sdp</video>
     
     
    <slides>http://10.0.2.2/imageTest.jpg</slides>
     
     
    </liens>
    l'activité:
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    package org.anddev.android.parsingxml;
     
    import java.net.URL;
     
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
     
    import org.xml.sax.InputSource;
    import org.xml.sax.XMLReader;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.TextView;
     
    public class ParsingXML extends Activity {
     
         private final String MY_DEBUG_TAG = "WeatherForcaster";
     
         /** Called when the activity is first created. */
         @Override
         public void onCreate(Bundle icicle) {
              super.onCreate(icicle);
     
              /* Create a new TextView to display the parsingresult later. */
              TextView tv = new TextView(this);
              try {
                   /* Create a URL we want to load some xml-data from. */
                   URL url = new URL("http://10.0.2.2/test.xml");
     
                   /* Get a SAXParser from the SAXPArserFactory. */
                   SAXParserFactory spf = SAXParserFactory.newInstance();
                   SAXParser sp = spf.newSAXParser();
     
                   /* Get the XMLReader of the SAXParser we created. */
                   XMLReader xr = sp.getXMLReader();
                   /* Create a new ContentHandler and apply it to the XML-Reader*/
                   ExampleHandler myExampleHandler = new ExampleHandler();
                   xr.setContentHandler(myExampleHandler);
     
                   /* Parse the xml-data from our URL. */
                   xr.parse(new InputSource(url.openStream()));
                   /* Parsing has finished. */
     
                   /* Our ExampleHandler now provides the parsed data to us. */
                   ParsedExampleDataSet parsedExampleDataSet = myExampleHandler.getParsedData();
     
                   /* Set the result to be displayed in our GUI. */
                   tv.setText(parsedExampleDataSet.toString());
     
              } catch (Exception e) {
                   /* Display any Error to the GUI. */
                   tv.setText("Error: " + e.getMessage());
                   Log.e(MY_DEBUG_TAG, "WeatherQueryError", e);
              }
              /* Display the TextView. */
              this.setContentView(tv);
         }
    }
    le gestionnaire:
    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
    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
    104
    105
    106
    package org.anddev.android.parsingxml;
     
     
     
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
     
     
     
     
    public class ExampleHandler extends DefaultHandler{
     
         // ===========================================================
         // Fields
         // ===========================================================
     
         private boolean in_liens = false;
         private boolean in_video = false;
         private boolean in_slides = false;
     
     
     
     
     
     
         private ParsedExampleDataSet myParsedExampleDataSet = new ParsedExampleDataSet();
     
         // ===========================================================
         // Getter & Setter
         // ===========================================================
     
         public ParsedExampleDataSet getParsedData() {
              return this.myParsedExampleDataSet;
         }
     
         // ===========================================================
         // Methods
         // ===========================================================
         @Override
         public void startDocument() throws SAXException {
              this.myParsedExampleDataSet = new ParsedExampleDataSet();
         }
     
         @Override
         public void endDocument() throws SAXException {
              // Nothing to do
         }
     
     
         /** Gets be called on opening tags like:
          * <tag>
          * Can provide attribute(s), when xml was like:
          * <tag attribute="attributeValue">*/
         @Override
         public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
     
        	 if (localName.equals("liens")) {
                   this.in_liens = true;
     
              }else if (localName.equals("video")) {
                   this.in_video = true;
     
              }else if (localName.equals("slides")) {
                   this.in_slides = true;
              }
     
         }
     
         /** Gets be called on closing tags like:
          * </tag> */
         @Override
         public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
              if (localName.equals("liens")) {
                   this.in_liens = false;
     
              }else if (localName.equals("video")) {
     
     
                   this.in_video = false;
     
              }else if (localName.equals("slides")) {
     
                   this.in_slides = false;
     
              }
     
         }
     
         /** Gets be called on the following structure:
          * <tag>characters</tag> */
         @Override
        public void characters(char ch[], int start, int length) {
     
        	 if(this.in_video){
                 myParsedExampleDataSet.setVideo(new String(ch, start, length));
                 }
                 if(this.in_slides){
                 myParsedExampleDataSet.setSlides(new String(ch, start, length));
                 }  
     
     
     
     
        }
    }
    le retour du parseur:
    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
    package org.anddev.android.parsingxml;
     
    public class ParsedExampleDataSet {
     
     
    	private String video, slides;
     
     
    	 public String getVideo(){return video;}
    	 public String getSlides() {return slides;}
     
    	 public void setVideo(String video){this.video=video;}
    	 public void setSlides(String slides){this.slides=slides;}
     
    	  public String toString(){
    		  return "video = "+this.video + "\n slides = "+ this.slides;
    	  }
     
    }
    le résultat affiché
    le log:
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): WeatherQueryError
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): java.io.FileNotFoundException: http://10.0.2.2/test.xml
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at org.apache.harmony.luni.internal.net.http://www.protocol.http.HttpURLConn...tion.java:1061)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at java.net.URL.openStream(URL.java:653)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at org.anddev.android.parsingxml.ParsingXML.onCreate(ParsingXML.java:42)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at android.os.Handler.dispatchMessage(Handler.java:99)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at android.os.Looper.loop(Looper.java:123)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at android.app.ActivityThread.main(ActivityThread.java:4363)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at java.lang.reflect.Method.invokeNative(Native Method)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at java.lang.reflect.Method.invoke(Method.java:521)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): at dalvik.system.NativeStart.main(Native Met
    je mentionne que l'erreur est à la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xr.parse(new InputSource(url.openStream()));
    de la classe ParsingXML

    merci d'avance pour tout aide

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Salut,
    je pense que le problème vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    04-23 09:54:54.062: ERROR/WeatherForcaster(357): java.io.FileNotFoundException: http://10.0.2.2/test.xml
    Donc ton programme ne peut pas trouver ton fichier. Plusieurs raisons :
    - le fichier n'existe réellement pas
    - le serveur est injoignable car il y a un problème de réseau (mal configuré par exemple, ou pas configuré).
    - problème de droit d'accès à ton serveur ?

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    le test se fait en localhost avec un serveur apache
    le serveur fonctionne tres bien: il m'affiche it works
    pas d'erreur de code..en fait j'ai suivi un tutorial


    par contre quand j'insere l'url http://localhost/test.xml il m'affiche:
    Forbidden

    You don't have permission to access /test.xml on this server.
    peu etre parce que je dois l'afficher en sudo ( je suis sur ubuntu)
    je sais pas si cette histoire entre dans mon probleme ou je dis n'importe quoi

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    C'est pas vraiment claire, il est où ton serveur ? sur ton téléphone ? sur un pc distant ?

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    oui le serveur sur mon pc, je suis entrain de faire le test en local

  6. #6
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Et via le navigateur de ton téléphone, tu arrives à afficher une des pages de ton serveur ?

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    j'ai résolu mon problème en fait ça etait un problème d'apache, j'ai ajouté la permission à mon fichier xml ( chmod 777 test.xml) et voila c 'est nickel

    merci pour ton aide MrDuChnok

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 91
    Par défaut
    mais comment ajouter les droits d' accès a mon fichier xml

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    en fait dans mon cas j'ai travaillé sur Ubuntu donc il suffit d'entrer dans le répertoire en question et exécuter la commande chmod 777 nom_fichier.xml (777 c'est à dire lire écrire et exécuter )
    Bon courage

  10. #10
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 274
    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 274
    Par défaut
    Est-ce qu'on peut parser un fichier XML qui se situe à l'intérieur du projet Android ?
    Par exemple dans le dossier assets file:///android_asset/ ou bien dans le dossier values ?

  11. #11
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Oui, sans problème.
    Il suffit d'ouvrir le fichier en lecture, et donc te parser le flux.

  12. #12
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 274
    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 274
    Par défaut
    D'accord merci.
    Ça me sera utile pour la suite.

  13. #13
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 91
    Par défaut
    mais comment le faire sur windows

  14. #14
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 274
    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 274
    Par défaut
    Tu parles d'accorder les droits en lecture sur le dossier de ton serveur où se situe ton fichier xml ?

    Tu fais clique droit sur le dossier => sécurité => t'ajoute le groupe "tout le monde" et tu leur donne l'accès en lecture.

    Mais il faut aussi que ton serveur laisse entrer ton téléphone, alors il faut rajouter un allow avec l'adresse ip de ton téléphone.

    Si t'as ça dans ton httpd.conf :
    <Directory "c:/wamp/www/">
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    </Directory>

    Ben ça va pas, parce que seul 127.0.0.1 est autorisé.

  15. #15
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 91
    Par défaut
    oui , j'ai ça comment le corriger alors?

  16. #16
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 274
    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 274
    Par défaut
    Ben il y a plusieurs solution, tu peux par exemple ajouter l'adresse IP de ton téléphone comme ça :
    Allow from ip.de.ton.tel

    Ou alors mettre Allow from all à la place de Deny for all, mais là tout le monde aura accès à ton serveur, mais c'est pas trop grave.

    Après faut redémarrer le serveur Apache.
    Personnellement moi j'ai mis mon fichier XML sur un compte Free que j'avais.
    Mais j'aurais pu le faire avec Wamp.

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

Discussions similaires

  1. [MySQL] Problème de parsage d'un fichier xml de 12 Go
    Par totoAussi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/08/2011, 00h40
  2. Problème de parsage en Json
    Par Flow_75 dans le forum Android
    Réponses: 4
    Dernier message: 26/06/2011, 19h17
  3. Problème de parsage dans un "parsage"
    Par stansoad0108 dans le forum Langage
    Réponses: 3
    Dernier message: 22/04/2008, 10h17
  4. Problème de parsage
    Par stansoad0108 dans le forum Modules
    Réponses: 8
    Dernier message: 31/03/2008, 10h08
  5. Réponses: 3
    Dernier message: 07/06/2007, 13h22

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