From: Maehara Masahide (=?iso-2022-jp?B?GyRCQTA4NkA1MVEbKEI=?=) Date: 2008-07-31T15:39:29+09:00 Subject: [ruby-list:45287] Hpricotでの疑問点(inner_html) 前原と申します。 Hpricotを利用した際,疑問点が出てきましたので,相談させてください。 以下を実行した際,「Ruby home page」と出力されることを期待していたので すが,画面には,「ruby home page」と表示されます。 ------------------------------------- require 'rubygems' require 'hpricot' doc = Hpricot('ruby home page') (doc/:a).each do |ele| ele.inner_html.gsub!(/ruby/, "Ruby") p ele.inner_html end ------------------------------------- 何故だろうと思い、hpricot-0.6/lib/hpricot/elements.rbを見てみたところ, inner_htmlメソッドがあり,そこでは, map { |x| x.inner_html }.join というような配列に対する処理をやっているので,gsub!できないんだなと理 解したつもりなのですが,このinner_htmlは,Elements#inner_htmlです。 以下のように,(doc/:a)は,Hpricot::Elementsなので,(doc/:a)に対して inner_htmlメソッドを呼び出して実行できるのは納得できるのですが, p (doc/:a).class #=> Hpricot::Elements p (doc/:a).inner_html #=> "ruby home page" 以下のように,eleは,Hpricot::Elemなので,ele.inner_htmlが実行できるの が不思議な感じがします。 p ele.class #=> Hpricot::Elem p ele.inner_html アドバイスをいただければ幸いです。 -- 宮崎県立佐土原高等学校(情報技術科) 前原 正英 http://www.miyazaki-c.ed.jp/sadowara-th/