image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« ピックアップ:入場料を取る未来の書店を考える, いまなぜ白川静なのか, etc... | トップページ | xml を別の xml 形式に変換するには? »

2008-11-22

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 にマップするには、どんな方法がよいだろう?

« ピックアップ:入場料を取る未来の書店を考える, いまなぜ白川静なのか, etc... | トップページ | xml を別の xml 形式に変換するには? »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/184434/43192913

この記事へのトラックバック一覧です: happymapper をつかってみる:

« ピックアップ:入場料を取る未来の書店を考える, いまなぜ白川静なのか, etc... | トップページ | xml を別の xml 形式に変換するには? »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク