2008年7月31日

[ruby-list:45287] Hpricotでの疑問点(inner_html)

前原と申します。

Hpricotを利用した際,疑問点が出てきましたので,相談させてください。

以下を実行した際,「Ruby home page」と出力されることを期待していたので
すが,画面には,「ruby home page」と表示されます。
-------------------------------------
require 'rubygems'

require 'hpricot'

doc = Hpricot('<a href="http://ruby-lang.org/">ruby home page</a>')
(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

アドバイスをいただければ幸いです。
--
宮崎県立佐土原高等学校(情報技術科)
前原 正英 <maehrm@xxxxx>
http://www.miyazaki-c.ed.jp/sadowara-th/


投稿者 xml-rpc : 2008年7月31日 15:39
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/75880
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。