Что является наиболее широко используемой библиотекой разбора каналов для Android? - PullRequest
7 голосов
/ 05 января 2010

Я хочу создать приложение, которое (помимо прочего) может анализировать каналы, загруженные по сети. Учитывая, что стандартные Java + Core Java-библиотеки не предоставляют службы синтаксического анализатора каналов, и я не хочу писать ее самостоятельно, можете ли вы назначить синтаксический анализатор Java-каналов, который будет работать на маломощных устройствах Android.

Я только начинаю изучать Android, закончив примеры Hello World, и я хотел бы перейти к своему первому приложению. Я хочу сделать что-то, что анализирует некоторые каналы ATOM или RSS и отображает некоторый контент в GridView.

Похоже, что пользовательский интерфейс хорошо документирован в Android, и у Sun есть много примеров того, как извлечь URL, однако я не совсем понимаю, как выполнять анализ фида.

Ранее, когда я делал подобные вещи в Pythion, я использовал парсер общего назначения, который может анализировать почти все (например, RSS, ATOM). Существует множество хороших реализаций Python такого рода вещей, однако я не нашел ничего подобного в стандартной библиотеке Android.

На работе я занимался (легким) обслуживанием корпоративных java-приложений. Общая практика заключается в том, чтобы брать любые классы, которые вам нравятся (например, анализатор каналов Jakarta Commons), и просто объединять их в CLASSPATH. Настольные приложения не заботятся о том, насколько велики зависимости, однако я уверен, что это большая проблема при компиляции пакета APK для использования на устройстве с ограниченными возможностями. Конечно, я должен быть очень разборчив в том, от каких банок я зависел, верно? Могу ли я просто использовать те же классы, что и для настольных приложений?

Примечания:

  • Мой фон написан на Python (только с легким опытом работы с Java)
  • В идеале я хотел бы использовать что-то популярное (но не самое лучшее), чтобы получить поддержку.
  • Еще лучше, я хотел бы использовать встроенную библиотечную функциональность, поэтому мне не нужно добавлять какие-либо сторонние Jar-файлы для раздувания моего приложения.
  • В настоящее время ориентирован на Android 1.5 (потому что это то, что работает на моем устройстве)

Ответы [ 5 ]

3 голосов
/ 05 января 2010

Поскольку каналы RSS / Atom по сути являются документами XML, вы можете использовать SAXParser , который является частью стандартных библиотек Java, включенных в Android.

2 голосов
/ 06 января 2010

Рим является одной из самых популярных библиотек java RSS. Я думаю, что это можно использовать и на Android.

0 голосов
/ 21 августа 2014

Существует также новая библиотека RSS, которую я написал: https://github.com/Pkmmte/PkRSS

Это очень легкий, эффективный, быстрый, настраиваемый и чрезвычайно простой в использовании. Например, следующий код загружает и анализирует ваш канал RSS в фоновом потоке:

PkRSS.with(this).load(url).async();

Легко, правда? Для этого есть более подробная информация на странице GitHub.

0 голосов
/ 08 августа 2012

Установите флажок Облегченная библиотека Android, чтобы читать части каналов RSS 2.0 в https://github.com/ahorn/android-rss. Я не знаю, является ли это самой популярной библиотекой для Android, но для меня она выглядит хорошо.Я еще не пробовал.

0 голосов
/ 14 февраля 2011

Настроить реализацию SAX-парсера довольно просто, но сложная часть заключается в том, чтобы иметь возможность анализировать любой канал на солнце.

Вам нужно обслуживать все форматы RSS 1, RSS 2, Atom и т. Д. Даже в этом случае вам придется бороться с плохо отформатированными каналами.

В прошлом я сталкивался с подобными проблемами, поэтому решил выполнить мой анализ каналов на сервере и просто получить проанализированный контент. Это позволяет мне запускать более сложные библиотеки и синтаксический анализатор, которые я могу изменять, не отправляя обновления для моего приложения.

У меня есть следующая служба, работающая в AppEngine, которая позволяет намного проще анализировать XML / JSON на вашем конце. Существует фиксированная и простая структура ответа. Вы можете использовать это для разбора

http://evecal.appspot.com/feedParser

Вы можете отправлять запросы POST и GET со следующими параметрами.

feedLink: URL ответа канала RSS: JSON или XML в качестве формата ответа

Примеры:

Для запроса POST

curl --data-urlencode "feedLink = http://feeds.bbci.co.uk/news/world/rss.xml" --data-urlencode" response = json "http://evecal.appspot.com/feedParser

Для запроса GET

evecal.appspot.com / feedParser? FeedLink = http://feeds.nytimes.com/nyt/rss/HomePage&response=xml

Моё приложение для Android "NewsSpeak" тоже использует это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...