2011-12-14 7 views
1

J'essaie d'ouvrir et de lire un fichier XML en tant que ressource locale avec jdom. Je peux ouvrir le fichier mais j'ai reçu une erreur disant que le fichier xml n'est pas bien formé. Voici le code:ne peut pas lire le fichier xml sur android

Uri path = Uri.parse("android:resource://package_name"+R.xml.data); 
InputSource source = new InputSource(new StringReader(path.toString())); 
document = builder.build(source); 

J'obtenu l'erreur suivante:

org.jdom.input.JDOMParseException:Error on line 1:At line 1, column 17:not well-formed (invalid token) 

Voici le fichier xml avec mes données:

<?xml version="1.0" encoding="utf-8"?> 
<data> 
    <person> 
    <name>Name1</name> 
    <firstname>Firstname1</firstname> 
    </person> 
    <person> 
    <name>Name2</name> 
    <firstname>Firstname2</firstname> 
    </person> 
</data> 

Auriez-vous une idée? Merci d'avance.

+0

votre fichier xml est absolument très bien. – hovanessyan

Répondre

4

Votre InputSource ne lit pas la ressource, il est en train de lire le chemin de la ressource (ce qui est un fichier XML bien formé :))

Si vous incluez une ressource XML dans Android, il sera pré-analysé au moment de la construction, donc vous ne voulez pas utiliser JDOM pour le lire. (Si vous voulez vraiment lire dans un DOM, inclure comme une ressource brute)

Au lieu de cela, utilisez Resources.getXml(R.xml.data), qui retournera un XmlPullParser

Si vous avez besoin dans un DOM, mettre à l'état brut/ressources, et obtenez votre lecteur pour votre InputSource de openRawResource()

+0

Merci pour votre réponse. J'ai vraiment besoin d'utiliser un DOM. – user1086225

2

Je ne suis pas sûr que vous avez référencé le fichier correctement, car le fichier XML semble bien. Je vérifierais le chemin que vous spécifiez au fichier, car R.xml.data retournera juste un int, pas un nom de fichier.