我想獲取一個xml文件,我可以通過http請求將它請求到一個對象中。 我在尋找一些類似的(在控制器):如何將http請求的文件(xml)存儲到對象中?
@ticket = request "http://example.com?ticketid=1234"
http://tickets.com?ticketid=1234返回XML(tickets.com不是應用程序正在運行的網站)。
然後我想解析@ticket,以獲取數據的XML。
Thx很多爲您的幫助!
我想獲取一個xml文件,我可以通過http請求將它請求到一個對象中。 我在尋找一些類似的(在控制器):如何將http請求的文件(xml)存儲到對象中?
@ticket = request "http://example.com?ticketid=1234"
http://tickets.com?ticketid=1234返回XML(tickets.com不是應用程序正在運行的網站)。
然後我想解析@ticket,以獲取數據的XML。
Thx很多爲您的幫助!
如果你只是想下載的XML轉換成字符串,下面會做:
require 'open-uri'
xml = URI.parse("http://example.com?ticketid=1234").read
如果要分析這個XML和提取數據,你需要看看 某種解析器,例如LibXml或Nokogiri。
如果您嘗試從另一個Rails應用程序訪問數據,則可能需要使用ActiveResource。這是一個不錯的introduction。
退房HTTParty超級簡單的Web服務消費。基本上,你會做這樣的事情:
class Ticket
include HTTParty
format :xml
end
@ticket = Ticket.get('http://url/to/ticket')
然後你就可以訪問元素在哈希:
@ticket['title'] # => the <title> element
一旦你的XML數據,您可以使用Active支持哈希的擴展,將其轉化變成哈希
xml = URI.parse("http://example.com?ticketid=1234").read
data = Hash.from_xml(xml)
這樣你不需要額外的庫,並找出遍歷xml。 YMMV
注意:不確定此方法如何處理元素屬性。
您可以使用Hpricot XML method這樣的:
require 'open-uri'
require 'hpricot'
@ticket = Hpricot.XML open "http://example.com?ticketid=1234"
然後你就可以輕鬆地分析@ticket
與角度來說,Hpricot動態方法。請參閱Hpricot頁面中的一些示例。
您是否希望@ticket包含XML或實際上是反映XML表示的數據的類的實例? – 2009-07-08 15:00:17
我還沒有想過。是的,我想在此之後脫離xml的數據,繼續工作。之後我沒有看到如何處理這個問題(我在編程方面很新穎,所以我一步一步地做)。 thx – 2009-07-08 15:16:33