RSS Feed Library无法正常工作

时间:2014-01-25 06:11:48

标签: android rss

我在我的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项目)

任何输入将不胜感激: - )

1 个答案:

答案 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();

异步加载这些内容