参考に
http://d.hatena.ne.jp/isamu136/20070821様を参考に簡略化して作ってみた。ほとんどパクリですけど。
require "open-uri" require "rexml/document" class Active def initialize(doc) if doc.is_a?(REXML::Element) doc = REXML::Document.new(doc.to_s).root else doc = REXML::Document.new(open(doc)).root end hash = Hash.new {|h, k| h[k] = Array.new} doc.elements.each do |element| e = element.name.downcase if element.elements.empty? hash[e] = element.get_text.to_s else hash[e] << Active.new(element) end end hash.each_pair do |k, v| instance_variable_set("@#{k}", v) instance_eval " def #{k} return @#{k} end " end end end url = "http://api.hotpepper.jp/GourmetSearch/V110/?key=guest&Latitude=35.660818&Longitude=139.775426&Range=3" Active.new(url).shop.each do |s| puts s.shopname puts s.shopurl end
まんぷく苑 http://www.hotpepper.jp/A_20100/strJ000031050.html?vos=nhppalsa000016 鮨 れいめい http://www.hotpepper.jp/A_20100/strJ000045341.html?vos=nhppalsa000016 地豚串焼と本格焼酎 タマヤ http://www.hotpepper.jp/A_20100/strJ000031884.html?vos=nhppalsa000016 いやし家 晴海トリトン店 http://www.hotpepper.jp/A_20100/strJ000034587.html?vos=nhppalsa000016 信州 そば野 http://www.hotpepper.jp/A_20100/strJ000045342.html?vos=nhppalsa000016 もんじゃ焼き 錦 http://www.hotpepper.jp/A_20100/strJ000029980.html?vos=nhppalsa000016 築地青空三代目 http://www.hotpepper.jp/A_20100/strJ000245175.html?vos=nhppalsa000016 築地青空三代目 hafu http://www.hotpepper.jp/A_20100/strJ000652004.html?vos=nhppalsa000016 もんじゃ おしお NST店 http://www.hotpepper.jp/A_20100/strJ000033127.html?vos=nhppalsa000016 もんじゃ屋 満天 http://www.hotpepper.jp/A_20100/strJ000034018.html?vos=nhppalsa000016
こういう考え方は本当に素晴しい。