さらに
試してみる。
puts (doc/"ul") #=> <ul class="test_class_1" id="test_id_1"> <li>test_li_11</li> <li>test_li_12</li> <li>test_li_13</li> </ul> <ul class="test_class_2" id="test_id_2"> <li>test_li_21</li> <li>test_li_22</li> <li>test_li_23</li> </ul>
ulタグのみ指定。指定した要素は空白文字が整形されて出力されるけど、子要素はHTMLに書かれた通りに出てくるみたい。# classとidがHTMLソースと逆になっているのはなぜだろう?そういうものなのかな。
# CSS puts (doc/"ul#test_id_1") # XPATH puts (doc/"[@id='test_id_1']") #=> <ul class="test_class_1" id="test_id_1"> <li>test_li_11</li> <li>test_li_12</li> <li>test_li_13</li> </ul>
idが"test_id_1"のもののみ出力。CSSでもXPATHでも同じことが出来ます。
(doc/"ul").each do |ul| (ul/"li").each do |li| puts li end end (doc/"ul li").each do |li| puts li end #=> <li>test_li_11</li> <li>test_li_12</li> <li>test_li_13</li> <li>test_li_21</li> <li>test_li_22</li> <li>test_li_23</li>
ulを指定して、さらにliを解析。こうすれば「指定した要素は空白文字が整形されて出力される」法則にのっとるので見やすい。これが本来の使い方だろうな。
↓このページはレベル高いかも
それHpricot(ry - walf443's blog