получение значения с помощью xpath, ruby - PullRequest
1 голос
/ 24 февраля 2011

Мне нужно получить значение 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 ]

1 голос
/ 24 февраля 2011

Используя 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"], который ищет span узлы, чей id равен "cheapest wine" (будучи идентификатором, должен быть только один).

0 голосов
/ 24 февраля 2011

Используйте следующее выражение XPath :

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

где текущий узел, с которого вычисляется выражение XPath, является родителем фрагмента XML, показанного в вашем вопросе.

Выражение XPath выше оценивается как 9.7

...