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>