我正在使用 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]