2014-01-25 83 views
1

我用我的Android項目這個圖書館閱讀RSS源:RSS訂閱圖書館工作不

https://github.com/matshofman/Android-RSS-Reader-Library

現在我剛剛開始了,我想獲得任何RSS提要工作,併發出一個單一的字符串(標題),並顯示在一個文本視圖。如果可行,我會繼續將它添加到列表視圖中,然後在另一個窗口中打開。

但因爲它是,下面的代碼無法正常工作:

 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 URL格式?或者是其他東西?

這裏是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項目)

任何投入將:-)

回答

4

理解試試這個庫: https://github.com/Pkmmte/PkRSS

它的工作原理大多數RSS提要默認和下載有效,但它也允許你插入你自己的解析器並製作它。

爲您的代碼,像這樣的工作:

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

+0

加載這些在它的gradle和不工作的進口 – encastellano

+0

@Pkmmte我們不能使用URL離線加載函數內的對象。而其他的東西是rssItem始終爲空。請爲此提供解決方案 – Krishan

+0

@Pkmmte如果您可以爲圖書館提供一個簡單易用的示例,這將會很有幫助。僅供參考,EarlParser加載時間與PkRss相比較少。 – Arpan