Nokogiri:如何通过其子标签的内容之一获取xml类

|| 例如,我有这个XML对象:
<PARENT>
  <ROW>
    <ID>1</ID>
    <INFO>1234</INFO>
  </ROW>
  <ROW>
    <ID>2</ID>
    <INFO>4321</INFO>
  </ROW>
  <ROW>
    <ID>3</ID>
    <INFO>4444</INFO>
  </ROW>
</PARENT>
在名为“ 1”的变量中。
xml = Nokogiri::XML(rows)
我需要的是通过ID标记内的ID检索整个ROW子标记搜索。     
已邀请:
s = <<-EOS
<PARENT>
  <ROW>
    <ID>1</ID>
    <INFO>1234</INFO>
  </ROW>
  <ROW>
    <ID>2</ID>
    <INFO>4321</INFO>
  </ROW>
  <ROW>
    <ID>3</ID>
    <INFO>4444</INFO>
  </ROW>
</PARENT>
EOS

doc = Nokogiri::XML(s)
element = doc.xpath(\"//ROW[ID=\'2\']\")
p element.to_s
# => \"<ROW>\\n    <ID>2</ID>\\n    <INFO>4321</INFO>\\n  </ROW>\"
并且,如果您想将结果优化到一个特定的节点,请将其添加到末尾。
s = <<-EOS
<PARENT>
  <ROW>
    <ID>1</ID>
    <INFO>1234</INFO>
  </ROW>
  <ROW>
    <ID>2</ID>
    <INFO>4321</INFO>
  </ROW>
  <ROW>
    <ID>3</ID>
    <INFO>4444</INFO>
  </ROW>
</PARENT>
EOS

doc = Nokogiri::XML(s)
element = doc.xpath(\"//ROW[ID=\'2\']/INFO\")
p element.to_s
# => \"<INFO>4321</INFO>\"
    
XPath允许您执行以下操作:
xml.xpath \'//PARENT/ROW/ID[text=\"3\"]/..\'
    
您可以像这样获得整行:
>> xml.xpath(\"//ROW[ID=3]\").each { |el| p el } #=> 0
#<Nokogiri::XML::Element:0x809ba610 name=\"ROW\" children=[#<Nokogiri::XML::Text:0x809ba318 \"\\n    \">, #<Nokogiri::XML::Element:0x809ba2c8 name=\"ID\" children=[#<Nokogiri::XML::Text:0x809b9fd0 \"3\">]>, #<Nokogiri::XML::Text:0x809b9e54 \"\\n    \">, #<Nokogiri::XML::Element:0x809b9e04 name=\"INFO\" children=[#<Nokogiri::XML::Text:0x809b9ad0 \"4444\">]>, #<Nokogiri::XML::Text:0x809b9968 \"\\n  \">]>
    

要回复问题请先登录注册