Ruby Nokogiri xml 解析

Ruby Nokogiri xml parsing

给定以下节点,我想搜索值 "H90.5" 和 return 属性字符串 dx1

<fld-21 dx-version="ICD10" dx1="H90.5" dx2="I25.9" dx3="I25.3" dx4="" dx5="" dx6="" dx7="" dx8="" dx9="" dx10="" dx11="" dx12=""/>

鉴于:

frag = Nokogiri::XML.fragment('<fld-21 dx-version="ICD10" dx1="H90.5" dx2="I25.9" dx3="I25.3" dx4="" dx5="" dx6="" dx7="" dx8="" dx9="" dx10="" dx11="" dx12=""/>')

如果您有多个元素和多个可能的属性,您可以这样做:

frag.css('fld-21').map do |node|
  node.attributes.select do |key, attr|
     key =~ /dx\d+/ && attr.value == "H90.5"
  end.keys
end

它returns:

[["dx1"]]

否则,您可以使用 .at 代替 .css,使用 .detect 代替 .select

这是搜索属性的 xpath 技巧:

doc.at('//@*[.="H90.5"]').name