2009-07-08 85 views
1

我想获取一个xml文件,我可以通过http请求将它请求到一个对象中。 我在寻找一些类似的(在控制器):如何将http请求的文件(xml)存储到对象中?

@ticket = request "http://example.com?ticketid=1234" 

http://tickets.com?ticketid=1234返回XML(tickets.com不是应用程序正在运行的网站)。

然后我想解析@ticket,以获取数据的XML。

Thx很多为您的帮助!

+0

您是否希望@ticket包含XML或实际上是反映XML表示的数据的类的实例? – 2009-07-08 15:00:17

+0

我还没有想过。是的,我想在此之后脱离xml的数据,继续工作。之后我没有看到如何处理这个问题(我在编程方面很新颖,所以我一步一步地做)。 thx – 2009-07-08 15:16:33

回答

2

如果你只是想下载的XML转换成字符串,下面会做:

require 'open-uri' 

xml = URI.parse("http://example.com?ticketid=1234").read 

如果要分析这个XML和提取数据,你需要看看 某种解析器,例如LibXmlNokogiri

如果您尝试从另一个Rails应用程序访问数据,则可能需要使用ActiveResource。这是一个不错的introduction

1

退房HTTParty超级简单的Web服务消费。基本上,你会做这样的事情:

class Ticket 
    include HTTParty 
    format :xml 
end 

@ticket = Ticket.get('http://url/to/ticket') 

然后你就可以访问元素在哈希:

@ticket['title'] # => the <title> element 
1

一旦你的XML数据,您可以使用Active支持哈希的扩展,将其转化变成哈希

xml = URI.parse("http://example.com?ticketid=1234").read 
data = Hash.from_xml(xml) 

这样你不需要额外的库,并找出遍历xml。 YMMV

注意:不确定此方法如何处理元素属性。

0

您可以使用Hpricot XML method这样的:

require 'open-uri' 
require 'hpricot' 

@ticket = Hpricot.XML open "http://example.com?ticketid=1234" 

然后你就可以轻松地分析@ticket与角度来说,Hpricot动态方法。请参阅Hpricot页面中的一些示例。