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 :

XML : Parser fichier local


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 XML : Parser fichier local
    Bonjour,

    Voilà, j'ai ce code :
    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
    package com.androidpeople.xml.parsing;
     
    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.widget.LinearLayout;
    import android.widget.TextView;
     
    public class XMLParsingExample extends Activity {
     
        /** Create Object For SiteList Class */
        SitesList sitesList = null;
     
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            /** Create a new layout to display the view */
            LinearLayout layout = new LinearLayout(this);
            layout.setOrientation(1);
     
            /** Create a new textview array to display the results */
            TextView name[];
            TextView website[];
            TextView category[];
     
            try {
     
                /** Handling XML */
                SAXParserFactory spf = SAXParserFactory.newInstance();
                SAXParser sp = spf.newSAXParser();
                XMLReader xr = sp.getXMLReader();
     
                /** Send URL to parse XML Tags */
                URL sourceUrl = new URL(
                        "http://www.androidpeople.com/wp-content/uploads/2010/06/example.xml");
     
                /** Create handler to handle XML Tags ( extends DefaultHandler ) */
                MyXMLHandler myXMLHandler = new MyXMLHandler();
                xr.setContentHandler(myXMLHandler);
                xr.parse(new InputSource(sourceUrl.openStream()));
     
            } catch (Exception e) {
                System.out.println("XML Pasing Excpetion = " + e);
            }
     
            /** Get result from MyXMLHandler SitlesList Object */
            sitesList = MyXMLHandler.sitesList;
     
            /** Assign textview array lenght by arraylist size */
            name = new TextView[sitesList.getName().size()];
            website = new TextView[sitesList.getName().size()];
            category = new TextView[sitesList.getName().size()];
     
            /** Set the result text in textview and add it to layout */
            for (int i = 0; i < sitesList.getName().size(); i++) {
                name[i] = new TextView(this);
                name[i].setText("Name = "+sitesList.getName().get(i));
                website[i] = new TextView(this);
                website[i].setText("Website = "+sitesList.getWebsite().get(i));
                category[i] = new TextView(this);
                category[i].setText("Website Category = "+sitesList.getCategory().get(i));
     
                layout.addView(name[i]);
                layout.addView(website[i]);
                layout.addView(category[i]);
            }
     
            /** Set the layout view to display */
            setContentView(layout);
        }
    }
    Sauf que je ne veux pas aller chercher mon fichier xml sur un serveur mais dans le répertoire où se trouve ma classe. J'ai beau tout essayer .. Je n'y arrive pas.

    Quelqu'un saurait-il m'expliquer comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 150
    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 150
    Par défaut
    Ne met pas tes fichiers dans src/ton.package/ mais plutôt dans assets/.
    Pis après tu peux faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AssetManager mgr = this.mContext.getAssets();
    InputStream in = mgr.open("xml/photo.xml");
    Mais bon apparemment toi tu ne fonctionne pas avec un InputStream, donc je ne suis pas sûre que ça puisse t'aider.
    Mais moi je parse comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document document;
    document = db.parse(in);
    Element element = document.getDocumentElement();
    NodeList nodeList = element.getElementsByTagName("photo");
    if (nodeList.getLength() > 0) {
         for (int i = 0; i < nodeList.getLength(); i++) {
              //
         }
    }

  3. #3
    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
    En fait, je voulais le mettre là, pour m'entraîner d'abord à le récupérer en local. Mais en fait, je dois aller le chercher sur carte SD du téléphone.

    Et je t'avoue que je ne sais pas comment faire non plus. Donc bon, si tu sais le faire, je suis preneur, sinon tanpis. Ca fait juste 2 jours que j'y suis non-stop après tout ... !

  4. #4
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 150
    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 150
    Par défaut
    J'ai vu ton autre topic, apparemment les gars ton donné largement assez d'éléments pour que tu y arrives, je ne pense pas qu'il soit possible de plus t'aider.

    Ton fichier xml c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0"?>
    <ressources>
         <ip>192.168.1.2</ip>
         <port>11002</port>
    </ressources>
    Bon j'avais 3 minutes à perdre, t'as de la chance, met ton fichier xml dans assets/machin.xml, après tu fais une méthode avec ça dedans :
    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
    AssetManager mgr = this.mContext.getAssets();
    InputStream in = mgr.open("xml/machin.xml");
     
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document document;
    document = db.parse(in);
    Element element = document.getDocumentElement();
    NodeList nodeList = element.getElementsByTagName("ressources"); // fais une liste de tout les nœuds "ressources"
     
    Element entry = (Element) nodeList.item(0); // prend le 1er nœud, en même temps y'en a qu'un
    Element eIp = (Element) entry.getElementsByTagName("ip").item(0); // là ya qu'une entrée ip par ressources
    Element ePort = (Element) entry.getElementsByTagName("port").item(0); // là ya qu'une entrée port par ressources
    String sIp = eIp.getFirstChild().getNodeValue();
    String sPort = ePort.getFirstChild().getNodeValue();
    Et voila dans sIp et sPort, t'as les 2 données que tu veux.
    Après passer le fichier machin.xml dans la carte sd ça doit pas être trop compliqué.
    Là le code fonctionne, mais c'est un peu de la merde quand même.

  5. #5
    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
    Bah écoute, c'est grâce à toi que j'y suis arrivé. Je te remercie.
    Enfin tout ca je savais déjà le faire, puis mon fichier xml n'est pas dans asset j'sais pas quoi. Il est dans la carte SD, ça fonctionne, me manquait le code pour accéder aux champs du XML, et c'est toi qui a reussi à m'en faire part.

    Merci beaucoup.

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

Discussions similaires

  1. [glib] parser fichier xml
    Par .:dev:. dans le forum C
    Réponses: 10
    Dernier message: 18/07/2006, 00h00
  2. [XML] Parser un fichier XML - SimpleXML
    Par Pepe67 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 05/07/2006, 11h39
  3. [DOM] Erreur parser fichier xml avec caractère spéciaux
    Par turcotm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/06/2006, 09h01
  4. [XML] [EXPAT] Parser fichier XML
    Par Ben42 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 17/02/2006, 14h08
  5. [XSL] Parser fichier xml : erreurs + incompréhensions
    Par totobouchon dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/07/2005, 15h47

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