我的Android RSS阅读器有点问题。我正在使用XML解析器从RSS提要中获取标签,但有时,在描述中,我有很多 - 例如,<description> <img src="some random url"><table...
,e.t.c。我想处理它们,尤其是IMG标签。我怎么能处理所有这些(因为现在我在描述中有一堆未解析的代码)。这是我的解析器类的读取函数。
private List<RssItem> readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
parser.require(XmlPullParser.START_TAG, null, "rss");
String title = null;
String link = null;
String description = null;
String pubDate = null;
String url = null;
List<RssItem> items = new ArrayList<RssItem>();
while (parser.next() != XmlPullParser.END_DOCUMENT) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if (name.equals("title")) {
title = readTitle(parser);
} else if (name.equals("link")) {
link = readLink(parser);
}
else if(name.equals("description")) {
description = readDescription(parser);
}
else if(name.equals("pubDate")) {
pubDate = readPubDate(parser);
}
if (title != null && link != null) {
RssItem item = new RssItem(title, link, description, pubDate, url);
items.add(item);
title = null;
link = null;
description = null;
pubDate = null;
url = null;
}
}
return items;
}
private String readDescription(XmlPullParser parser) throws XmlPullParserException, IOException{
parser.require(XmlPullParser.START_TAG, ns, "description");
String description = readText(parser);
parser.require(XmlPullParser.END_TAG, ns, "description");
return description;
}
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
String result = "";
if (parser.next() == XmlPullParser.TEXT) {
result = parser.getText();
parser.nextTag();
}
return result;
}
提前感谢您的回答
答案 0 :(得分:1)
我有类似的问题,解决方案的一部分,您可以将描述作为字符串,并将其传递给返回String数组以表示参数的方法。 jsoup库可以帮助提取图像链接。仍然不知道它是否可以提取其他参数。 这是我到目前为止所做的。
public String[] stripHtml(String html) {
Document document = Jsoup.parse(html);
String picLink = document.select("img").first().attr("src");
String result = Html.fromHtml(html).toString();
result = result.substring(0, result.indexOf('['));
String[] linkAndDescription = {picLink, result};
return linkAndDescription;
}
修改 这是我的情况的完整解决方案,我想解析图像链接和描述文本。
public String[] stripHtml(String html) {
Document document = Jsoup.parse(html);
//piclink
String picLink = document.select("img").first().attr("src");
//description
String text = document.select("p").first().text();
text = text.substring(0, text.indexOf('['));
String[] linkAndDescription = {picLink, text};
return linkAndDescription;
}