我在我的android项目中使用这个库来阅读RSS Feed:
https://github.com/matshofman/Android-RSS-Reader-Library
现在我刚刚开始,我正在努力让任何RSS提要工作并发出一个字符串(标题)并在textview中显示它。如果可行,我将继续将其添加到列表视图中,然后在另一个窗口中打开。
但实际上,下面的代码不起作用:
TextView t = (TextView) findViewById(R.id.textView1);
try {
url = new URL("http://feeds.feedburner.com/ndtv/TqgX");
} catch (Exception e) {
t.setText("URLerror");
}
try {
RssFeed feed = RssReader.read(url);
ArrayList<RssItem> rssItems = feed.getRssItems();
String sn = feed.getTitle();
t.setText(sn);
for (RssItem rssItem : rssItems) {
Log.i("RSS Reader", rssItem.getTitle());
}
} catch (Exception e) {
Log.i("Error", "eror");
t.setText("RSSerror");
}
运行Textview时设置为“RSSerror”,因此问题出在第二个try块中。以下是图书馆的官方示例:
URL url = new URL("http://example.com/feed.rss");
RssFeed feed = RssReader.read(url);
ArrayList<RssItem> rssItems = feed.getRssItems();
for(RssItem rssItem : rssItems) {
Log.i("RSS Reader", rssItem.getTitle());
}
我是否使用了错误的RSS网址格式?或其他什么?
这是RSSReader类:
公共类RssReader {
public static RssFeed read(URL url) throws SAXException, IOException {
return read(url.openStream());
}
public static RssFeed read(InputStream stream) throws SAXException, IOException {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader reader = parser.getXMLReader();
RssHandler handler = new RssHandler();
InputSource input = new InputSource(stream);
reader.setContentHandler(handler);
reader.parse(input);
return handler.getResult();
} catch (ParserConfigurationException e) {
throw new SAXException();
}
}
我有另外3个人,RSSItem,RSSHandler和RSSFeed,据我所知,这些都很有效。可能导致问题的原因是什么?
如果你需要其他课程,请问(或者,查看giuhub项目)
任何输入将不胜感激: - )
答案 0 :(得分:4)
试试这个库: https://github.com/Pkmmte/PkRSS
默认情况下,它适用于大多数RSS源并有效下载,但它也允许您插入自己的Parser并制作它。
对于你的代码,这样的东西可行:
TextView t = (TextView) findViewById(R.id.textView1);
try {
url = new URL("http://feeds.feedburner.com/ndtv/TqgX");
} catch (Exception e) {
t.setText("URLerror");
}
try {
List<Article> rssItems = PkRSS.with(this).load(url).get();
Article article = rssItems.get(0);
t.setText(article.getTitle());
for (Article item : rssItems) {
Log.i("PkRSS", item.toShortString());
}
} catch (Exception e) {
Log.i("Error", "eror");
t.setText("RSSerror");
}
虽然您可能希望使用PkRSS.with(this).load(url).callback(this).async();