プラネット NetBeans のフィードの問題をどうにかできないかなということで、RSS フィードをごにょごにょするプログラムを書こうと思っていたのですが、あ、そうですね、こういうのはすでにいろいろライブラリがあるんですね。私が使ってみたのは Informa というものです。
使い方をメモしておきます。とても便利でした。(最初にこれを使ってうまく動いてしまったので他のものは調べていません)

まずは NetBeans で使うための設定を。Java アプリケーションプロジェクトを作ってそこに JAR を追加します。ライブラリノードで右クリック、「JAR/フォルダを追加...」を選びます。



ダウンロードして展開した JAR を選択して追加します。



これで使えるようになります。



クイックスタート
のページにある方法で実際にフィードをとってきてみます。
import de.nava.informa.core.ChannelIF;
import de.nava.informa.core.ParseException;
import de.nava.informa.impl.basic.ChannelBuilder;
import de.nava.informa.parsers.FeedParser;
import java.net.URL;

URL url = new URL("http://blogs.sun.com/katakai/feed/entries/atom");
ChannelIF channel = FeedParser.parse(new ChannelBuilder(), url);  
単純にタイトルをとってきてみます。
String title = channel.getTitle();
タイトルが変だったらこれを変更してみます。
channel.setTitle("新タイトル");
個々のエントリの description や title をとってきてみます。
import de.nava.informa.core.ItemIF;
import java.util.Iterator;
import java.util.Set;

Set<ItemIF> sets = channel.getItems();
for (Iterator<ItemIF> it = sets.iterator(); it.hasNext();) {
    ItemIF itemIF = it.next();

    String description = itemIF.getDescription();
    String title = itemIF.getTitle();
}
個々のエントリでいらないものがあればここで削除できます。例えば私のやりたかった NetBeans に関係ない記事を削除できます。
    if ( .... /* いらない */) {
        channel.removeItem(itemIF);
    }
で、最後にこの変更を入れた channel をファイルに書き出すことができます。
import de.nava.informa.core.ChannelExporterIF;
import de.nava.informa.exporters.RSS_1_0_Exporter;

ChannelExporterIF exporter = new RSS_1_0_Exporter("myfeed.rdf");
exporter.write(channel);
Comments:

Post a Comment:
Comments are closed for this entry.

This blog copyright 2009 by katakai