2014-01-25 5 views
1

Я использую эту библиотеку в моем андроиде проекта читать RSS Feed:RSS Feed Библиотека не работает

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» так что проблема в блоке 2-я попытка. Ниже приведен официальный список из библиотеки:

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

Я использую неправильный формат для URL-адреса 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)

Любой вход будет понятно :-)

ответ

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

+0

Его форума в Gradle и не работает импорт – encastellano

+0

@Pkmmte мы не можем использовать URL объект внутри функции загрузки. и другое: rssItem всегда равно нулю. пожалуйста, дайте решение для этого – Krishan

+0

@Pkmmte. Это будет полезно, если вы можете предоставить хороший простой в использовании пример для вашей библиотеки. FYI, время загрузки EarlParser меньше по сравнению с PkRss. – Arpan