RomeをAndroidで使ってみる
RSSやAtomフィードを扱うJava製ライブラリとして有名なRomeをAndroidで使ってみました。 以前はAndroid非対応だったんですが、1.6.xのどこかで対応したようです。
最新版は1.7.4なのでbuild.gradleに以下を指定しましょう。
compile 'com.rometools:rome:1.7.4'
Androidアプリで使っているライブラリの依存関係を調べる | backportのやり方でライブラリの依存関係をチェックしておきます。
+--- com.rometools:rome:1.7.4
| +--- com.rometools:rome-utils:1.7.4
| | \--- org.slf4j:slf4j-api:1.7.16
| +--- org.jdom:jdom2:2.0.6
| \--- org.slf4j:slf4j-api:1.7.16
XMLのパースにはJDOM 2を使っていて、ログ用にSLF4Jが組み込まれている、という構成です。
具体的なコードは、XMLをパースするだけならこれでOK。
String xml = "...";
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new StringReader(xml));
// URLからRSS取得するところも任せるならこっち
// SyndFeed feed = input.build(new XmlReader(feedUrl));
for (SyndEntry entry : feed.getEntries()) {
RssFeed currentFeed = new RssFeed();
Log.d(TAG, entry.getTitle());
Log.d(TAG, entry.getDescription().getValue());
Log.d(TAG, entry.getLink());
}
RSSやAtomってバリエーションがいくつかあるので、自前でXMLはパースするのは結構面倒です。 厄介なところをライブラリにお任せできるのは素晴らしいですね。今回はパースだけ試しましたが、RSSやAtomの生成にも対応しています。
と、お手軽に使えていい感じのライブラリなんですが、情報収集はちょっと注意しましょう。
公式サイトであるROME - Homeは充実しているように見せかけて情報が古いまま。ネット上の情報も古いバージョンのものが多いようです。情報の信頼度や鮮度を逐一気にしながら確認することをおススメします。
関連(するかもしれない)記事
おススメ