アキはフリーランスのプログラマーです >> Java
Sponsored link

このエントリーを含むはてなブックマーク このエントリーを含むECナビ人気ニュース

informa (RSS API)

JavaでRSSを扱うAPIです。

これはLGPLライセンスです。

他にも僕の好きなApacheライセンスのrsslibjにも期待したいです。

04.02.29に使ったときは依存性がうまく解決できませんでした。


RSS Version 0.91においてよく以下のエラーがでます。

2004/03/16 5:29:04 de.nava.informa.parsers.RSSParser parse


RSS Version 2.0では

2004/03/16 5:29:11 de.nava.informa.parsers.RSSParser parse

情報: Channel uses RSS root element (Version 2.0).


導入

まずは以下より最新版をダウンロードします。バイナリー版でいいでしょう。

http://informa.sourceforge.net/

あとはライブラリーのパスを通すだけです。

informa.jar;commons-logging.jar;jdom.jar;XercesImpl.jar

で動きます。

サンプル

これで出力したものはここにあります。

ちなみに、右側に出ている日記リストはこれで作成しています。

RSSをパースします。

ここでははてなのrssを試しています。

public static void readTest() {
		try {
			URL url = new URL("http://d.hatena.ne.jp/xucker/rss/");
			ChannelIF channel = RSSParser.parse(new ChannelBuilder(), url);
			System.out.println(channel.getTitle());
			System.out.println(channel.getDescription());
			Collection list = channel.getItems();
			
			ItemIF[] items = (ItemIF[]) list.toArray(new ItemIF[0]);

			for (int i = 0; i < items.length; i++) {
				String title = items[i].getTitle();
				System.out.println(title + " " + items[i].getLink());
			}

		} catch (IOException e) {

			e.printStackTrace();
		} catch (ParseException e) {

			e.printStackTrace();
		}
	}

RSSを書き出します。

public static void writeTest() {
		ChannelBuilder builder = new ChannelBuilder();

		ChannelIF newChannel = builder.createChannel("My Homepage");

		System.out.println(newChannel.getTitle());
		newChannel.setFormat(ChannelFormat.RSS_1_0);
		newChannel.setLanguage("ja");
		try {
			//
			newChannel.setSite(new URL("http://www.xucker.jpn.org"));
			//
			newChannel.setLocation(
				new URL("http://www.xucker.jpn.org/xucker-utf-8.rdf"));
			ItemIF item =
				builder.createItem(
					newChannel,
					"title",
					"description",
					new URL("http://localhost"));
			item.setDate(new Date());
			newChannel.addItem(item);
			//c:\tmp ディレクトリーが必要になります。
			RSS_1_0_Exporter writer =
				new RSS_1_0_Exporter(new File("c:\\tmp\\rss.xml"));
			writer.write(newChannel);
		} catch (MalformedURLException e) {

			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

このエントリーを含むはてなブックマーク このエントリーを含むECナビ人気ニュース