You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Nokogiri的XPath仅解析Resource下的默认Prices节点

只获取Resource下直接的Prices节点内的Price元素

这事儿好办,你之前用的.//price是递归查找当前节点下所有层级的price元素,所以会把products里嵌套的price也捞出来。只要调整定位语法,精准锁定resource的直接子节点prices里的price就行,给你两种常用方案:

方案一:精确的相对XPath路径

直接指定从resource节点出发,只找它的直接子节点prices下的price:

# 只获取resource下直接的prices里的price节点
default_price_nodes = resource.xpath("./prices/price")

语法细节解释:

  • ./:表示从当前节点(也就是你拿到的resource节点)开始查找
  • prices:匹配resource的直接子节点中的<prices>元素
  • /price:匹配该<prices>下的直接子节点<price>

这样就完全不会碰products里嵌套的那些prices和price了。

方案二:用CSS选择器(Nokogiri同样支持)

如果你觉得XPath写起来有点绕,Nokogiri也支持CSS选择器,用>表示直接子元素,写法更直观:

default_price_nodes = resource.css("> prices > price")

效果和上面的XPath完全一致,看你个人习惯选哪种就行。

最后给个处理节点的小示例,方便你参考:

default_price_nodes.each do |price|
  date_from = price["datefrom"]
  date_to = price["dateto"]
  amount = price["price"].to_f
  currency = price["currency"]
  # 这里写你的业务处理逻辑,比如存入数据库或者转换为业务对象
end

内容的提问来源于stack exchange,提问作者Rober

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:47:16