Comment puis-je analyser un fichier XML local dans le dossier assets à l'aide de l'analyseur par extraction? Je ne peux pas obtenir l'analyseur de tirer au travail. Il jette toujours une exception io. Je pense que je ne peux pas obtenir le chemin d'accès au fichier, ou la connexion au fichier.xml extraire les éléments du parseur xml
Répondre
mixm,
je en train de jouer avec plusieurs façons de charger un fichier local à la fois des « actifs » et « res », mais pour répondre à votre question posée (comme personne ne semble avoir):
Tout d'abord, que ce soit assurez-vous que votre XML est valide avant le test ou désactiver la validation, voici comment vous pouvez le faire et instancier un analyseur de traction en même temps:
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setValidating(false);
XmlPullParser myxml = factory.newPullParser();
ouvrez ensuite le fichier xml et défini comme entrée à votre analyseur:
InputStream raw = getApplicationContext().getAssets().open("simple.xml");
myxml.setInput(raw, null);
configuration Maintenant, votre boucle de traction (ou autre, dépend de ce que vous voulez faire différé tirant ou non, c'est vos décisions de conception:
int eventType = myxml.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
Log.d(MY_DEBUG_TAG, "In start document");
}
else if(eventType == XmlPullParser.START_TAG) {
Log.d(MY_DEBUG_TAG, "In start tag = "+myxml.getName());
}
else if(eventType == XmlPullParser.END_TAG) {
Log.d(MY_DEBUG_TAG, "In end tag = "+myxml.getName());
}
else if(eventType == XmlPullParser.TEXT) {
Log.d(MY_DEBUG_TAG, "Have text = "+myxml.getText());
}
eventType = myxml.next();
}
} catch (XmlPullParserException e) {
Notez le myxml.getEventType()
, vous devez faire pour obtenir l'analyse passe et gère les types d'événements que vous tirez. Remarque: les blocs catch ont été omis pour plus de lisibilité.
Testée ci-dessus sur 2.1, espère que cela aide -Frank
considéreriez-vous parseurs autre que tirer? –