如何使用 Nokogiri 获取具有特定 id 的元素内的值?
How can I use Nokogiri to get value inside element with certain id?
我有一个由项目节点组成的元素结构,我用 Nokogiri 像这样解析它:
@xml.css('item').each do |item|
# do something
end
现在该项目有一个看起来像这样的部分 9 每个项目都有这个元素,其 id 下面):
<customfield id="customfield_10004" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
<customfieldname>Yada yada</customfieldname>
<customfieldvalues>
<customfieldvalue>8.0</customfieldvalue>
</customfieldvalues>
</customfield>
我想从中解析 8.0 值。在另一个 SO answer 中,我发现你可以使用这样的东西(对于 HTML):
item.xpath("//customfield[@id='customfield_10004']").css('customfieldvalue')
不幸的是,这似乎是 return 以相同顺序排列的所有值的字符串,而不是我正在查看的项目节点的特定值。
有谁知道如何解析customfieldvalue节点中的float值吗?
您的问题是您在 xpath 查询的开头使用了 //
,它告诉 xpath 引擎从文档的根目录开始并找到匹配的所有内容,而不管您当前的节点。请尝试使用 ./
。
尝试使用 XPath 表达式来识别元素并提取第一个匹配节点的文本:
@xml.xpath('//item').each do |item|
path = "//customfield[@id='customfield_10004']/*/customfieldvalue"
item.xpath(path).first.text.to_f // => 8.0, etc
end
我有一个由项目节点组成的元素结构,我用 Nokogiri 像这样解析它:
@xml.css('item').each do |item|
# do something
end
现在该项目有一个看起来像这样的部分 9 每个项目都有这个元素,其 id 下面):
<customfield id="customfield_10004" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
<customfieldname>Yada yada</customfieldname>
<customfieldvalues>
<customfieldvalue>8.0</customfieldvalue>
</customfieldvalues>
</customfield>
我想从中解析 8.0 值。在另一个 SO answer 中,我发现你可以使用这样的东西(对于 HTML):
item.xpath("//customfield[@id='customfield_10004']").css('customfieldvalue')
不幸的是,这似乎是 return 以相同顺序排列的所有值的字符串,而不是我正在查看的项目节点的特定值。
有谁知道如何解析customfieldvalue节点中的float值吗?
您的问题是您在 xpath 查询的开头使用了 //
,它告诉 xpath 引擎从文档的根目录开始并找到匹配的所有内容,而不管您当前的节点。请尝试使用 ./
。
尝试使用 XPath 表达式来识别元素并提取第一个匹配节点的文本:
@xml.xpath('//item').each do |item|
path = "//customfield[@id='customfield_10004']/*/customfieldvalue"
item.xpath(path).first.text.to_f // => 8.0, etc
end