#android #rss
#Android #RSS-канал
Вопрос:
Я хочу показывать в своем приложении для Android по одному элементу из rss каждый день. Теперь я не хочу создавать сложный rss-ридер с listview, и поэтому я просто хочу получать один элемент каждый день, возможно ли это? Спасибо
Комментарии:
1. Конечно, это так. Какой XML-анализатор вы используете? Если вы можете поместить все это в цикл, чтобы получить все записи, почему получение только первого должно быть проблемой?
2. Я еще не использовал какой-либо анализатор, можете ли вы указать мне на хорошее руководство?
Ответ №1:
Это очень общий вопрос, но я сделаю все возможное, чтобы ответить на него. Вам нужно будет сделать три вещи: получить xml, проанализировать xml, а затем отобразить его.
Для получения XML я рекомендую использовать AsyncTaskLoader и HttpURLConnection для его загрузки.
Для синтаксического анализа XML у вас есть несколько вариантов. Вы можете использовать синтаксический анализатор SAX. Мне нравится это делать именно так. Вы можете проверить это руководство о том, как использовать синтаксический анализатор SAX. Или, если вы предпочитаете использовать анализатор DOM, вы можете проверить это руководство.
После того, как он был проанализирован, вы можете просто установить содержимое TextView на то, что вы проанализировали.
У меня нет примера всего этого, потому что в основном это целое приложение для Android. Но с тем, что я вам дал, у вас должно быть достаточно, чтобы начать и создать его самостоятельно.
Ответ №2:
Извлечение канала с помощью http и синтаксический анализ xml можно легко выполнить с помощью сторонней библиотеки.
Вот код, который я использовал для извлечения ленты избранных фотографий Picasa и анализа элемента rss для извлечения заголовка и URL-адреса содержимого.
public void xml_ajax(){
String url = "https://picasaweb.google.com/data/feed/base/featured?max-results=8";
aq.ajax(url, XmlDom.class, this, "picasaCb");
}
public void picasaCb(String url, XmlDom xml, AjaxStatus status){
showResult(xml, status);
if(xml == null) return;
List<XmlDom> entries = xml.tags("entry");
List<String> titles = new ArrayList<String>();
String imageUrl = null;
for(XmlDom entry: entries){
titles.add(entry.text("title"));
imageUrl = entry.tag("content", "type", "image/jpeg").attr("src");
}
showTextResult(titles);
}
Я также писал об этом здесь
http://blog.androidquery.com/2011/09/simpler-and-easier-xml-parsing-in.html