569095 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

けむしろうの部屋別館

けむしろうの部屋別館

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Calendar

Archives

2024年06月
2024年05月
2024年04月
2024年03月
2024年02月

Category

Favorite Blog

ZIKOMANZOKU rooms kotoraya2000さん
しゅみっだ~~~ もこもこ5781さん
今日のご遺体 秘密の洗体レディーさん

Comments

コメントに書き込みはありません。

Freepage List

2006年03月08日
XML
カテゴリ:プログラミング
オリジナルのRSSリーダを作ってみたいという個人的興味に駆られて、RSSデータをJavaから読み込むプログラムを作ってみました。

RSSデータはXMLデータなのでJavaのXML関連のパッケージを使うことになります。
以下にJ2SE5向けのプログラムを示します。

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class XMLtest {
private static enum Namespace {
DC ("http://purl.org/dc/elements/1.1/"),
RDF ("http://www.w3.org/1999/02/22-rdf-syntax-ns#"),
XHTML ("http://www.w3.org/1999/xhtml");

private final String uri;

Namespace(String uri) {
this.uri = uri;
}
public String uri() {
return uri;
}
};

public static void main(String[] args) {
String rss = "http://api.plaza.rakuten.ne.jp/kemusiro/rss/";

try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 名前空間をサポートするように設定する。
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.parse(rss);

// ドキュメントのルートを取得
Element root = d.getDocumentElement();

// ルート直下の"channel"タグに含まれるノードリストを取得
NodeList channel = root.getElementsByTagName("channel");

// "channel"タグ直下の"title"タグに含まれるノードリストを取得する。
NodeList title =
((Element)channel.item(0)).getElementsByTagName("title");

// "title"タグの値を取得する。
System.out.println(
"タイトル: " + title.item(0).getFirstChild().getNodeValue());

// 各"item"とその中の"title"、"dc:date"を取得する。
NodeList item_list = root.getElementsByTagName("item");
for (int i = 0; i < item_list.getLength(); i++) {
Element elem = (Element)item_list.item(i);
NodeList item_title = elem.getElementsByTagName("title");
NodeList item_date =
elem.getElementsByTagNameNS(Namespace.DC.uri(), "date");

System.out.print(
item_date.item(0).getFirstChild().getNodeValue());
System.out.print(" ");
System.out.println(
item_title.item(0).getFirstChild().getNodeValue());
}

}
catch (Exception e) {
e.printStackTrace();
}
}
}
列挙型を使っているのでJ2SE5でしか動きませんが、J2SE1.4で動かす場合は適当に定数フィールドで置き換えてください。

main()の1行目で、RSSデータを取得したいURLを定義します。
上記の例では私の楽天広場のRSSを指定しています。
後は、RSSのXMLデータ形式に従ってXMLをパースしてノードを取り出していくだけです。

このプログラムの実行結果を以下に示します。

タイトル: けむしろうの部屋別館
2006-03-07T05:27:33+09:00 XOOPS Cubeでポータルサイト作り(その2)
2006-03-06T05:14:27+09:00 オーロラのライブ中継
2006-03-06T02:23:35+09:00 オライリーの動物本の表紙を作ろう
2006-03-05T17:10:14+09:00 楽天広場のテーマが1時間当たりに増える数
2006-03-03T02:48:16+09:00 楽天テーマ検索機能のプログラムについて
2006-03-02T05:02:49+09:00 楽天ブログのテーマ検索機能を作りました
2006-03-01T04:14:03+09:00 技術系彼女へのホワイトデー向けアイテムにこんな下着はいかが
2006-02-28T04:28:30+09:00 ナムコミュージアム Vol.2 (PSP) ジョイスティックが欲しい
2006-02-28T02:35:26+09:00 グループとテーマと記事数の関係
2006-02-27T04:45:13+09:00 重複テーマベスト30(その2)
2006-02-27T04:55:22+09:00 重複テーマベスト30(その1)
2006-02-26T05:00:27+09:00 記事ゼロのテーマが多すぎる
2006-02-25T18:40:10+09:00 高3次男への虐待弁当!
2006-02-24T02:25:47+09:00 たくさんある重複するテーマ
2006-02-23T02:36:49+09:00 楽天ブログに存在するテーマはいくつ?
2006-02-22T04:57:53+09:00 3歳児+0歳児+33歳夫婦のリアルな生態がフラッシュアニメで!

日付がW3Cフォーマットなのでちょっと見にくいですが、データさえ取得できれば後は文字列の操作だけの問題ですね。

Javaのライブラリが揃っているおかげで意外とプログラムは簡単でした。
あとはSwingを使ってJFrameを作れば、ちょっとしたRSSリーダを作れそうです。





お気に入りの記事を「いいね!」で応援しよう

Last updated  2006年03月08日 04時02分08秒
コメント(0) | コメントを書く
[プログラミング] カテゴリの最新記事



© Rakuten Group, Inc.