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 :

Lire un fichier XML dans /res/xml


Sujet :

Android

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Par défaut Lire un fichier XML dans /res/xml
    J'ai exactement le même problème qu'ici, à savoir un fichier xml dans res/xml, que je souhaiterais lire à partir de mon code (plus particulièrement, à partir d'une Activity).
    Mon fichier xml étant court, je préfèrerais le lire avec l'api dom et ne pas me servir d'un XmlPullParser, qui fonctionne plutôt comme sax, ce qui a tendance à grandement alourdir mon code jusqu'à remettre en cause l'utilité du xml dans ce cas!

    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DocumentBuilder builder = factory.newDocumentBuilder();
    			getResources().getXml(R.xml.french)
    			File f = new File("res/xml/french.xml"); 
                            Document dom = builder.parse(f);
    			root = dom.getDocumentElement();
    et plusieurs variantes : File f = new File("xml/french.xml")
    ...

    à chaque fois une exception donc si quelqu'un peut nous aider, ce serait sympa!

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par androidisme Voir le message
    à chaque fois une exception donc si quelqu'un peut nous aider, ce serait sympa!
    Quelle exception ? Ce genre d'information pourrait aider à comprendre ce qui ne fonctionne pas...
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 51
    Par défaut
    J'imagine que l'exception est IOException ou NullPointerException, parce qu'il n'y a pas de fichier à "res/xml/french.xml". Les ressources que tu déploies avec ton application n'existent que dan le APK – comme dans un JAR.
    Alors pour lire les ressources dans res il ne faut qu'appeler openRawResource(int id):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document dom builder.parse(getResources().openRawResource(R.xml.french));
    root = dom.getDocumentElement();
    Attention – je n'ai pas testé ce code et je ne suis pas 100% certain que openRawResource marche pour les ressources hors de "res/raw" mais je dirais 95%.

    J'espere que tu le trouves utile.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Par défaut
    La méthode openRawRessources() ne fonctionne malheureusement pas, j'ai toujours le NullPointerException.
    En lisant la documentation sur cette méthode, il est précisé que celle-ci ne fonctionne que sur les drawable, les sounds et les raw resources, pas sur les String et les couleurs.

    Je pense donc être obligée d'utiliser la méthode getXml() qui me renvoie un XmlPullParser et qui m'oblige de ce fait à utiliser un XmlPullParser, alors que je voulais une logique DOM.

    Quelqu'un connaitrait une façon de faire qui utiliserait la logique DOM plutot que SAX?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Par défaut
    La seule solution est de mettre son fichier xml dans res/raw et d'utiliser la méthode de Pffft :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document dom builder.parse(getResources().openRawResource(R.raw.french));
    root = dom.getDocumentElement();
    En espérant en avoir aidé quelques-uns!

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

Discussions similaires

  1. Lire un fichier XML dans /res/xml
    Par mrfalxe dans le forum Android
    Réponses: 0
    Dernier message: 29/06/2010, 02h33
  2. [XSLT] lire le contenu des balises en xml dans un ordre précis
    Par ajax12 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 08/04/2010, 18h47
  3. [SWING][Synth]Lire les propriétés stockées dans synth.xml
    Par salaunga77 dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 27/03/2009, 17h26
  4. [XML][BdD] Insertion de fichiers binaires dans un XML
    Par saidsefrou dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 13/03/2007, 09h25
  5. [XML] Insérer du XML dans un fichier HTML
    Par tafkap dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 14/11/2005, 00h14

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