RomeでRSSフィードをパース
初めて使ったのですが、Romeはフォーマットを意識する必要もなく簡単にRSSフィードのパースができて素晴らしいですね。
import java.net.URL; import java.util.List; import org.xml.sax.InputSource; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.io.SyndFeedInput; import com.sun.syndication.io.XmlReader; public class RomeSample { public static void main(String[] args) throws Exception { SyndFeedInput feedInput = new SyndFeedInput(); URL url = new URL("http://d.hatena.ne.jp/srkzhr/rss"); SyndFeed feed = feedInput.build(new XmlReader(url)); List<SyndEntry> entries = feed.getEntries(); for (SyndEntry entry : entries) { System.out.println(entry.getTitle()); System.out.println(entry.getLink()); } feed = feedInput.build(new InputSource(url.openStream())); entries = feed.getEntries(); for (SyndEntry entry : entries) { System.out.println(entry.getTitle()); System.out.println(entry.getLink()); } } }
ただ、同じものをGoogle App Engine上で動作させてみたところ、うまくいきませんでした。
ローカル環境では以下のライブラリのみで動作しますが
- rome-1.0.jar
- jdom.jar (1.1)
以下リンクにある通り、クラウド上ではxercesも合わせてデプロイしないと動作しないので注意が必要です。
当方ではjdomに同梱されているxerces.jarを持っていくと正常に動作する事を確認できました。
http://groups.google.co.jp/group/google-app-engine-japan/browse_thread/thread/e9283474dda71bb3?pli=1
http://code.google.com/p/googleappengine/issues/detail?id=1367