这是一种方法:
require 'nokogiri'
doc = Nokogiri::XML::Document.parse <<-eot
<Instrument id="161" code="648">
<Parameter key="currency" value="USD"/>
<Parameter key="calendar" value="JAN"/>
</Instrument>
eot
doc.css('#161 Parameter').map{|e| e['value']}
# => ["USD", "JAN"]
# to get only 'USD' the below would work as per your example.
doc.at_css("#161 Parameter[key='currency']")['value']
# => "USD"
doc.css
会给你Nokogiri::XML::NodeSet
,哪里doc.at_css
都会给你Nokogiri::XML::Node
。doc.css('#161 Parameter')
将为您提供所有Parameter
节点,其中 asdoc.at_css("#161 Parameter[key='currency']")
将为您提供第一个Parameter
节点。
我试过: node.search 'Parameter[key=currency]' 但我不知道如何检索实际值。
你很亲密。做就是了
doc.search("Parameter[key='currency']").first['value']
# => "USD"