2012-11-28 46 views
1

我正在使用UPS API驗證位置。我收到來自UPS的XML響應,然後嘗試解析出我需要的信息。根據地址的不同,UPS可以爲每個地址發送一到三個<AddressLine>元素。Ruby - 使用NokoGiri遍歷具有相同名稱但不同含義的xml元素

如果一個地址有兩個或多個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 
+0

我不明白這個問題。收集或統計線路數量並根據計數確定要執行的操作。 –

回答

4

假設xml是引入nokogiri XML文檔(例如xml = Nokogiri::XML(xmlString)),你可以爲//AddressLine做的XPath搜索,其結果將是所有這些節點:

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

這正是我想要的。謝謝! –

1

這會給你最多兩條地址線:

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