我想获取一个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