【发布时间】:2015-10-26 08:29:28
【问题描述】:
我正在尝试获取名称并读取 type="alpha"。
我是初学者,英语不是我的第一语言,请原谅我。我已经阅读了有关 DOM、SAX、Simple、其他 StackOverflow 帖子、其他示例的信息,但我不明白,并且想在这种情况下了解 XMLPullParser。
以下示例 XML:
<feed>
<title>Title</title>
<item>
<entry>
<name>Name1</name>
<record date="20001231">
<reading type="alpha" value="100"/>
<reading type="beta" value="200"/>
</record>
</entry>
<entry>
<name>Name2</name>
<record date="20001231">
<reading type="alpha" value="300"/>
<reading type="beta" value="400"/>
</record>
</entry>
</item>
</feed>
我读过这个:http://developer.android.com/training/basics/network-ops/xml.html
示例代码适用于上面没有
private List<Entry> readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
List<Entry> entries = new ArrayList<Entry>();
parser.require(XmlPullParser.START_TAG, ns, "feed");
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
if (parser.getName().equals("entry")) {
entries.add(readEntry(parser));
} else {
skip(parser);
}
}
return entries;
}
我尝试使用
private List<Entry> readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
List<Entry> entries = new ArrayList<Entry>();
parser.require(XmlPullParser.START_TAG, ns, "feed");
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
if (parser.getName().equals("item")) {
parser.next();
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
if (parser.getName().equals("entry")) {
entries.add(readEntry(parser));
} else {
skip(parser);
}
}
} else {
skip(parser);
}
}
return entries;
}
如果我能解决这个问题,我将能够读取名称和记录日期,但我想要得到的是 name 和 reading type="alpha",我不知道如何获得嵌套阅读type="alpha"。
非常感谢。
【问题讨论】:
标签: java android xml nested xmlpullparser