在Ruby中使用Nokigiri获取嵌套的XML标记

在Ruby中使用Nokigiri获取嵌套的XML标记,ruby,nokogiri,Ruby,Nokogiri,我使用此Ruby代码获取XML标记值: def value_from_xml_for(xml, tag) xml_body = Nokogiri::XML(xml) hash = Hash.from_xml(xml_body.to_s) hash.dig("payment_transaction", tag) end 我想获得国家的价值: <payment_transaction> <card_holder>Automation Example<

我使用此Ruby代码获取XML标记值:

def value_from_xml_for(xml, tag)
  xml_body = Nokogiri::XML(xml)
  hash = Hash.from_xml(xml_body.to_s)
  hash.dig("payment_transaction", tag)
end
我想获得国家的价值:

<payment_transaction>
   <card_holder>Automation Example</card_holder>   
   <billing_address>     
     <country>DE</country>
   </billing_address>
</payment_transaction>

自动化示例
判定元件

目前我得零分。如何扩展代码以使用内部XML标记?

下面是一个如何在nokogiri中解析XML的示例,这正是您的方法所要做的:

xml_str = <<EOF
<payment_transaction>
   <card_holder>Automation Example</card_holder>
   <billing_address>
     <country>DE</country>
   </billing_address>
</payment_transaction>

doc = Nokogiri::XML(xml_str)

doc.at_xpath('//country').to_s
如果只想获取标记的文本

  def value_from_xml_for(xml, tag)
    tag = "//" + tag # assuming you pass 'country' as tag
    xml_body = Nokogiri::XML(xml)
    tag = xml_body.at_xpath(tag)
    tag.text if tag
  end

是的,我已经更新了我的答案,并给你一个额外的想法,如果你需要的话
  def value_from_xml_for(xml, tag)
    tag = "//" + tag # assuming you pass 'country' as tag
    xml_body = Nokogiri::XML(xml)
    tag = xml_body.at_xpath(tag)
    tag.text if tag
  end