Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用xpath、ruby获取值_Xpath_Jruby - Fatal编程技术网

使用xpath、ruby获取值

使用xpath、ruby获取值,xpath,jruby,Xpath,Jruby,我需要从下面的代码中获取值9,70,但无法这样做。数字的逗号是数字的一部分,而不是分隔符,因此一个字符串中需要整数id=“cheapest wine”是唯一的,但它会不断返回错误 <tr class="chartTableHeader"> <tr class="chartTableRow"> <td class="chartTableColFirst" style="height: 19px"> <td class="chartTableCol"

我需要从下面的代码中获取值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">

9,70

使用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
需要“nokogiri”

xml=使用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
需要“nokogiri”

xml=使用以下XPath表达式:

number(
    translate(tr[@class='chartTableRow']/td/span[@id='cheapest wine'], 
             ',', 
             '.'
             )
      )
其中,计算XPath表达式的当前节点是问题中显示的XML片段的父节点


上述XPath表达式的计算结果为
9.7
使用以下XPath表达式:

number(
    translate(tr[@class='chartTableRow']/td/span[@id='cheapest wine'], 
             ',', 
             '.'
             )
      )
其中,计算XPath表达式的当前节点是问题中显示的XML片段的父节点


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

您的代码未显示,请修复问题。您的代码未显示,请修复问题。
//span[@id='cheapest wine']
就足够了。然后使用正确的DOM方法获取字符串值:在混合内容数据模型中选择文本节点这不是最好的主意。。。或者只要获取字符串值原子类型(//span[@id='cheapest wine'])
就可以了,如果您的XPath引擎支持这种通用的XPath表达式。@Alejandro:非常感谢这些精确性,我已经根据您的建议修改了我的答案。希望现在可以了?
//span[@id='cheapest wine']
就足够了。然后使用正确的DOM方法获取字符串值:在混合内容数据模型中选择文本节点这不是最好的主意。。。或者只要获取字符串值原子类型(//span[@id='cheapest wine'])
就可以了,如果您的XPath引擎支持这种通用的XPath表达式。@Alejandro:非常感谢这些精确性,我已经根据您的建议修改了我的答案。希望现在一切都好了?