Ruby - 使用 NokoGiri 遍历具有相同名称但含义不同的 xml 元素



我正在使用 UPS API 来验证位置。 我收到来自 UPS 的 XML 响应,然后尝试解析出我需要的信息。 UPS 可以为每个地址发回一到三个<AddressLine>元件,具体取决于地址。

如果一个地址有两个或更多AddressLines,我需要拉出前两个。 如果一个地址只有一个AddressLine,我需要拉那一行。

如何提取地址和地址2?

<AddressKeyFormat>
  <AddressLine>655 MANSELL RD</AddressLine>
  <AddressLine>Apartment #2</AddressLine>
</AddressKeyFormat>

代码 :

xml.xpath('//AddressKeyFormat').each do |node|
  #pull out address, and address2
end

假设xml是Nokogiri XML文档(例如 xml = Nokogiri::XML(xmlString) ),您可以对//AddressLine执行 XPath 搜索,结果将是所有这些节点:

xml.xpath('//AddressLine').map(&:text) # => ["655 MANSELL RD", "Apartment #2"] 

这将为您提供最多两个地址行:

xml.xpath('//AddressKeyFormat/AddressLine').map(&:text)[0,2]

相关内容

  • 没有找到相关文章

最新更新