Я пытаюсь проанализировать файл XML в моем приложении android и попробовал следовать примерам Android Developers на сайте. Однако, даже если все теги в тегах 'start' были обработаны, программа продолжает работу в бесконечном l oop и никогда не выходит из 'while (parser.next ()! = XmlPullParser.END_TAG)' l oop, хотя мой XML файл начинается и заканчивается тегами <data>
и </data>
. Что я делаю не так?
public List parse(InputStream in) throws XmlPullParserException, IOException { /* Function that takes Assay file as input stream */
try {
XmlPullParser parser = Xml.newPullParser(); /* Create new parser */
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); /* */
parser.setInput(in, null);
parser.nextTag();
return readFeed(parser); /* extracts and processes the data */
} finally {
in.close();
}
}
private List readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
List girlNameList = new ArrayList();
List boyNameList = new ArrayList();
parser.require(XmlPullParser.START_TAG, ns, "data");
while (parser.next() != XmlPullParser.END_TAG) {
parser.next();
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String currentTag = parser.getName();
if(currentTag.equals("emily")) {
girlNameList.add(currentTag);
} else if(currentTag.equals("robert") {
boyNameList.add(currentTag);
} else {
skip(parser);
}
}
return namesList;
}
<data>
<emily type="short" msg="======something=========="> </emily>
<emily type="tall" msg="======another message=========="> </emily>
<robert type="short" > </robert>
<emily type="tall" > </emily>
<robert type="tall" msg="use this later" > </robert>
<tester type="n/a" msg="should be skipped" > </tester>
</data>