Comment extraire le texte d'un XML imbriqué à l'aide de XMLPullparser dans Android?
-
13-11-2019 - |
Question
<doc>
<element>
text
<item>
text1
</item>
<item>
text2
</item>
text3
</element>
<element>
another text
</element>
...
</doc>
et je veux extraire du texte sur une chaîne comme celle-ci:
"text text1 text2 text3"
"Item" Les balises sont imbriquées à l'intérieur "élément"
im en utilisant xmlpullparser à Android mais je pourrais utiliser tout autre analyseur s'il facilite les choses. tx.
La solution
Je parse des fichiers XML similaires.Voici un exemple.Vous devrez ajouter une erreur d'erreur selon le cas.
void loadXML(XmlPullParser xpp) {
int eventType = xpp.next();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG && 0 == XML_ELEMENT_TAG.compareTo(xpp.getName())) {
loadElement(xpp);
}
eventType = xpp.next();
}
}
private void loadElement(XmlPullParser xpp) {
int eventType = xpp.getEventType();
if ( eventType == XmlPullParser.START_TAG && 0 == XML_ELEMENT_TAG.compareTo(xpp.getName()) ) {
eventType = xpp.next();
while ( eventType != XmlPullParser.END_TAG || 0 != XML_ELEMENT_TAG.compareTo(xpp.getName()) ) {
if (eventType == XmlPullParser.START_TAG && 0 == XML_ITEM_TAG.compareTo(xpp.getName())) {
loadItem(xpp);
}
eventType = xpp.next();
}
}
}
private void loadItem(XmlPullParser xpp) {
int eventType = xpp.getEventType();
if ( eventType == XmlPullParser.START_TAG && 0 == XML_ITEM_TAG.compareTo(xpp.getName()) ) {
eventType = xpp.next();
while ( eventType != XmlPullParser.END_TAG || 0 != XML_ITEM_TAG.compareTo(xpp.getName()) ) {
// Get attributes.
String attr = xpp.getAttributeValue(null, XML_MY_ATTR);
String text = null;
// Get item text if present.
eventType = xpp.next();
while ( eventType != XmlPullParser.END_TAG || 0 != XML_ITEM_TAG.compareTo(xpp.getName()) ) {
if ( eventType == XmlPullParser.TEXT ) {
text = xpp.getText();
}
eventType = xpp.next();
}
eventType = xpp.next();
}
}
}
Autres conseils
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow