1

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

2 回答 2

4

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

xml.xpath('//AddressLine').map(&:text) # => ["655 MANSELL RD", "Apartment #2"] 
于 2012-11-28T17:12:02.153 回答
1

这将为您提供最多两条地址线:

xml.xpath('//AddressKeyFormat/AddressLine').map(&:text)[0,2]
于 2012-11-28T18:36:08.107 回答