Ruby 資料一覧
XMLパース
2007/10/16更新
対応バージョン: 1.8.6
RubyでXMLデータをパースするにはいくつかの方法があるが、ここではRuby 1.8に標準添付されているREXMLライブラリを使用してRSS2.0のファイルをパースする(RSSライブラリは使用しない)。
尚、RSS/Atomのバージョン毎の差異吸収やエラー処理等は省いている。
パース対象RSS (2.0)
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>sample blog</title>
<link>http://foo.bar.com/</link>
<description>サンプルブログ</description>
<language>ja</language>
<item>
<title>使い方難しい。</title>
<link>http://foo.bar.com/article/2</link>
<pubDate>Thu, 17 Oct 2007 17:13:00 +0900</pubDate>
</item>
<item>
<title>ブログ始めました。</title>
<link>http://foo.bar.com/article/1</link>
<pubDate>Wed, 13 Oct 2007 12:08:00 +0900</pubDate>
</item>
</channel>
</rss>
ソース
require "rexml/document"
include REXML
require "time"
doc = Document.new File.new("rss20.xml")
puts "<ul>"
doc.elements.each("rss/channel/item") {|item|
title = item.elements["title"].text
link = item.elements["link"].text
pubDate = item.elements["pubDate"].text
date = Time.rfc2822(pubDate).strftime("%m/%d")
puts " <li><a href=\"#{link}\">#{title}</a> (#{date})</li>"
}
puts "</ul>"
実行結果
<ul> <li><a href="http://foo.bar.com/article/2">使い方難しい。</a> (10/17)</li> <li><a href="http://foo.bar.com/article/1">ブログ始めました。</a> (10/13)</li> </ul>