JavaでRSSフィードを取得する手段は?
commonsのHttpClientライブラリで取得してDom操作とか、、そんなめんどくさそうな感じがいやだったので、いろいろと探してみると、ありました!その名も「ROME」
このROMEは、RSSやAtomフィードなどのいろんなバージョンのRSSを統一なインターフェースで取得できるライブラリである、ということでさっそく使ってみました。
まずは、公式サイトから「ROME」、「ROME Fether」、そして「JDOM」のバイナリをダウンロードし、
rome-0.9.jar
rome-fetcher-0.9.jar
jdom.jar
を抽出し、CLASSPATHを通します。
そしてサンプルがこちら。
[java]
import java.net.URL;
import java.util.List;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.fetcher.FeedFetcher;
import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher;
public class Main {
private static final String FEED_URL = “http://ueblog.natural-wave.com/feed/”;
public static void main(String[] args) {
FeedFetcher fetcher = new HttpURLFeedFetcher();
try {
SyndFeed feed = fetcher.retrieveFeed(new URL(FEED_URL));
System.out.println(“Blog Title:” + feed.getTitle());
for (SyndEntry entry : (List
System.out.println(“===================================================”);
System.out.println(“Title:” + entry.getTitle());
System.out.println(“Date:” + entry.getPublishedDate());
System.out.println(“Uri:” + entry.getUri());
System.out.println(“Description:” + entry.getDescription().getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/java]
URLをいれてFeedの繰り返しをまわしながら、getメソッドで取得していく。すごく直感的でわかりやすい!
実行した結果はこちら
[code]
Blog Title:ueblog
===================================================
Title:英語SNS、「iKnow」がすごい件
Date:Thu Nov 29 00:15:46 JST 2007
Uri:http://ueblog.natural-wave.com/2007/11/29/%e8%8b%b1%e8%aa%9esns%e3%80%81%e3%80%8ciknow%e3%80%8d%e3%81%8c%e3%81%99%e3%81%94%e3%81%84%e4%bb%b6/
Description:
英語やらなきゃって勉強していても、なかなか続かないのが悩みの種。まさにそんな自分なんですが、このはてぶで見つけた「iKnow!」っていうサービスがすごい!
見た目とか、フォームとかインターフェー…
===================================================
[/code]
JavaでRSS取得するのにいろいろと調べていて思ったのですが、さまざまな手法があり、またどれが標準的なものなのか、一番使われていてメンテナンスされているライブラリはどれか、ということがすごくわかりにくいなあと感じます。
特にJavaの場合、Webのフレームワークが顕著ですが、どれが自分に最適なのか?また、組み合わせもいろいろ考えられるところが逆に新しい開発者が参入しにくい一因になっているようなそんな気がする。
今回のRomeにしても、JDOMというライブラリが必要であったり面倒な部分があるので、All IN Oneで手軽に導入できないものかと、そう感じました。
Check Tweet