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

使用Nokogiri筛选符合条件的XML子集并提取Code元素列表

Nokogiri XML解析筛选实现方案

你可以通过以下步骤完成筛选和提取:

require 'nokogiri'
require 'rubygems' # 低版本Ruby环境需额外引入该库来使用Gem::Version

# 复用你已有的CodeList节点查询结果
all_codelists = document.css("structure|CodeList")

# 第一步:筛选出isFinal属性为true的节点
final_codelists = all_codelists.select { |list| list['isFinal'] == 'true' }

# 第二步:筛选出version最高的节点
# 使用Gem::Version处理版本号,避免直接转浮点数导致的1.10 < 1.2这类错误
target_codelist = final_codelists.max_by { |list| Gem::Version.new(list['version']) }

# 第三步:提取目标节点下所有Code元素
if target_codelist
  codes = target_codelist.css("structure|Code")
  # 按需遍历处理每个Code节点即可,示例:
  codes.each do |code|
    puts "Code值:#{code['value']}"
    # 读取多语言描述示例
    code.css("structure|Description").each do |desc|
      puts "#{desc['xml:lang']} 描述:#{desc.content}"
    end
  end
else
  # 可在此处添加无符合条件CodeList时的兜底逻辑
end

核心逻辑说明

  • Nokogiri的XML元素节点支持直接通过节点['属性名']读取属性值,XML中所有属性值默认为字符串类型,因此判断isFinal时直接和字符串"true"比较即可。
  • 版本号比较使用Ruby内置的Gem::Version类,适配各类标准版本号格式的大小判断,兼容性更好。
  • 拿到目标CodeList节点后,直接在该节点对象上调用css方法,只会查询该节点范围内的子元素,不会匹配文档其他位置的同类型节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:27:01