我想解析 RSS 提要。我的问题是如何解析之间的所有标签<item>
and </item>
tags.
鉴于这个非常简单的 XML:
<?xml version="1.0" ?>
<rss version="2.0">
<channel>
<title>MyRSSPage</title>
<link>http://www.example.com</link>
<item>
<link>www.example.com/example1</link>
<title>Example title 1</title>
</item>
<item>
<link>www.example.com/example2</link>
<title>Example title 2</title>
</item>
</channel>
</rss>
我只想解析之间的内容<item>...</item>
tags.
List<RssMessage> messages = new ArrayList<RssMessage>();
// parser is a XmlPullParser instance
while(parser.next() != XmlPullParser.END_DOCUMENT) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
// START OF HEADER
if(name.equals("title")) {
title = parser.nextText();
}
else if(name.equals("link")) {
link = parser.nextText();
}
else if(name.equals("description")) {
description = parser.nextText();
}
else if(name.equals("language")) {
language = parser.nextText();
}
else if(name.equals("copyright")) {
copyright = parser.nextText();
}
else if(name.equals("pubDate")) {
pubdate = parser.nextText();
}
// END OF HEADER
else if(name.equals("item")) {
RssMessage rssMessage = processItem(parser);
messages.add(rssMessage);
}
}
在下面的方法中,我只想解析<item>...</item>
标签。如何构建一个循环来遍历之间的项目<item>
and </item>
?
EDIT
这几乎可以工作了。但有时,即使 RSS xml 中的相应元素确实存在,也不会启动所有元素!下面的代码有问题吗?
private RssMessage processItem(XmlPullParser parser) throws IOException, XmlPullParserException {
RssMessage rssMessage = new RssMessage();
parser.require(XmlPullParser.START_TAG, ns, "item");
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if(name.equals("link")) {
rssMessage.setLink(parser.nextText());
}
else if(name.equals("guid")) {
rssMessage.setGuid(parser.nextText());
}
else if(name.equals("category")) {
rssMessage.setCategory(parser.nextText());
}
else if(name.equals("title")) {
rssMessage.setTitle(parser.nextText());
}
else if(name.equals("pubDate")) {
rssMessage.setPubDate(parser.nextText());
}
}
return rssMessage;
}