如何解决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 \">]>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。