happymapper をつかってみる
- http://www.rubyinside.com/happymapper-ruby-xml-object-mapping-1349.html
> HappyMapper: Easy XML / Object Mapping for Rubyists
という記事を読んだ。
早速、このHappyMapper で、google の blog サーチ結果の rss を読み込む例を作ってみた。
$ cat read_rss.rb
# See http://blogsearch.google.co.jp/blogsearch_feeds?hl=ja&q=ruby&lr=&um=1&ie=utf-8&num=100&output=rss
require 'rubygems'
require 'open-uri'
require 'happymapper'
require 'pp'
module RSS
class Item
include HappyMapper
tag 'item'
element :title, String, :tag =>'title'
element :link, String, :tag =>'link'
element :description, String, :tag =>'description'
element :publisher, String, :tag =>'publisher'
element :creator, String, :tag =>'creator'
element :publisher, String, :tag =>'dc:publisher'
element :creator, String, :tag =>'dc:creator'
element :date, DateTime, :tag =>'dc:date'
def to_s
"title:#{title}\nlink:#{link}\ndesc:#{description}\npublisher:#{publisher}\ncreator:#{creator}\nDate:#{date.strftime( "%Y-%m-%d %H:%M:%S")}"
end
end
class Channel
include HappyMapper
tag 'channel'
element :title, String, :tag =>'title'
element :link, String, :tag =>'link'
element :description, String, :tag =>'description'
has_many :channel, Item
def to_s
"title:#{title}, link: #{link}, desc: #{description}"
end
end
end
# google blog 検索で "ruby" を10 件、時間順で検索した結果の RSS
url = "http://blogsearch.google.co.jp/blogsearch_feeds?hl=ja&um=1&scoring=d&q=ruby&lr=lang_ja&ie=utf-8&num=10&output=rss"
open( url ) do |http|
response = http.read
rss = RSS::Channel.parse(response, :single => true, :use_default_namespace => false)
puts rss
count = 0;
rss.channel.each do |item|
count += 1
puts "[#{count}]\n#{item}\n"
end
end
走らせると、こんな出力が得られる。
$ ruby read_rss.rb
title:ruby - Google ブログ検索, link: http://blogsearch.google.co.jp/blogsearch?hl=ja&um=1&scoring=d&q=ruby&lr=lang_ja&ie=Shift_JIS&num=10, desc: Google ブログ検索結果: 検索結果<b>258,087</b>件 <b>ruby</b> - <b>1</b> ~ <b>10</b>件目を表示
[1]
title:<b>Ruby</b> Stone : おはょ~ - livedoor Blog(ブログ)
link:http://blog.livedoor.jp/rubystone/archives/581481.html
desc:<b>Ruby</b> Stone · < withコロナ. 2008年11月22日20:15. カテゴリ. おはょ~ · 60a935fd.jpg 今日も始まりましたぁ~ みなさん今日から三連休だよーん 明日休みだょね? だったら飲み にくるしかないょね~ 今日もニューフェイスがぃますぜぃ☆ きてくだちゃい <b>...</b>
publisher:Ruby Stone
creator:rubystone
Date:2008-11-22 11:28:11
[2]
title:forgot_passwordプラグインを使ってみる - なんとなく日記
link:http://d.hatena.ne.jp/conceal-rs/20081122/1227351842
desc:cd /path/to/app % <b>ruby</b> script/plugin install git://github.com/greenisus/forgot_password.git % <b>ruby</b> script/generate forgot_password user % rake db:migrate. 次はパスワード忘れ用画面へリンクを張ります. <%= link_to "パスワードを忘れた場合 <b>...</b>
publisher:なんとなく日記
creator:conceal-rs
Date:2008-11-22 11:22:41
... 以下 省略...
roxml という xml <-> ruby の mapper もあるようだが、
gem install roxml としても、エラーが発生して、インストールできない。
XBRL タクソノミー/インスタンスを ruby にマップするには、どんな方法がよいだろう?
最近のコメント