NokogiriとXPathに頭を悩ませようとしていますが、この動作の説明に役立つことを願っています。このコード:
data = Nokogiri::XML(%{
<veg>
<peas>
<color>"green"</color>
</peas>
<peas>
<color>"yellow"</color>
</peas>
</veg>
})
data.xpath('//peas').each do |p|
puts p
puts p.xpath('color/text()')
puts p.xpath('//color/text()') # output not as expected
end
この出力を提供します:
<peas>
<color>"green"</color>
</peas>
"green"
"green"
"yellow"
<peas>
<color>"yellow"</color>
</peas>
"yellow"
"green"
"yellow"
p.xpath('//color/text()')
pにはどちらか一方しか含まれていないのに、putsはどのようにして緑と黄色の両方を取得するのでしょうか。