使用xpath,ruby获取价值

时间:2011-02-24 12:56:02

标签: xpath jruby

我需要从以下代码中获取值9,70,但我无法这样做。数字的逗号是数字的一部分而不是分隔符,因此在一个字符串中需要整数。 id="cheapest wine"是唯一的,但它会一直返回错误。

<tr class="chartTableHeader">
<tr class="chartTableRow">
  <td class="chartTableColFirst" style="height: 19px">
  <td class="chartTableCol" style="height: 19px">
  <td class="chartTableCol" style="height: 19px">
  <span id="cheapest wine">9,70</span>
  </td>
  <td class="chartTableCol" style="height: 19px">
  <td class="chartTableCol" style="height: 19px">
  <td class="chartTableCol" style="height: 19px">

2 个答案:

答案 0 :(得分:1)

使用Nokogiri,并假设您的html格式正确,您可以获得如下值:

require 'nokogiri'

xml = <<-EOF
<root>
<span id="cheapest wine">9,70</span>
</root>
EOF

doc = Nokogiri::XML(xml)
doc.xpath('//span[@id="cheapest wine"]').map do |add|
  puts add.inner_text
end

这里的关键是XPath查询://span[@id="cheapest wine"],它搜索spanid的{​​{1}}个节点(作为id,应该只有一个)。

答案 1 :(得分:0)

使用以下XPath表达式

number(
    translate(tr[@class='chartTableRow']/td/span[@id='cheapest wine'], 
             ',', 
             '.'
             )
      )

其中评估XPath表达式的当前节点是您问题中显示的XML片段的父节点。

上面的XPath表达式的计算结果为9.7