我正在尝试解析以下类型的XML。
我用来解析的代码就是这个:
parser.nextTag();
parser.require(XmlPullParser.START_TAG, null, "feed");
while(parser.nextTag() == XmlPullParser.START_TAG) {
parser.require(XmlPullParser.START_TAG, null, "item");
System.out.println(parser.getName());
parser.require(XmlPullParser.END_TAG, null, "item");
}
有人可以告诉我我做错了什么吗?我得到的错误是XmlPullParserException意外类型位置:TEXT SORIN
答案 0 :(得分:1)
您处于开始item
标记中。您必须移至最终item
标记。通过调用parser.nextTag();
,否则,require会尝试将item
标记之间的TEXT与item
的结束标记匹配,这会引发异常。
parser.nextTag();
parser.require(XmlPullParser.START_TAG, null, "feed");
while(parser.nextTag() == XmlPullParser.START_TAG) {
parser.require(XmlPullParser.START_TAG, null, "item");
System.out.println(parser.getName());
parser.nextTag();
parser.require(XmlPullParser.END_TAG, null, "item");
}
答案 1 :(得分:0)
parser.getName()
为您提供当前标记的名称(例如“item”)。您需要当前标记的文本内容。
将System.out.println(parser.getName());
更改为
parser.require(XmlPullParser.TEXT);
System.out.println(parser.getText());
它仍会在atom
标签处失败,因为它没有文字,但我认为你明白了。好吧,实际上它会在atom
标记处失败,因为您只需要item
个标记,但这不是真正的问题。