我想获取一个xml文件,我可以通过http请求将其请求到一个对象中。 我正在寻找类似的东西(在控制器中):
@ticket = request "http://example.com?ticketid=1234"
http://tickets.com?ticketid=1234返回XML(tickets.com不是应用程序运行的网站)。
然后我想解析@ticket,从xml中获取数据。
很多你的帮助!
答案 0 :(得分:2)
如果您只想将XML下载到字符串中,可以执行以下操作:
require 'open-uri'
xml = URI.parse("http://example.com?ticketid=1234").read
如果要解析此XML并提取数据,则需要查看 某种解析器,例如LibXml或Nokogiri。
如果您尝试从其他Rails应用程序访问数据,可能 ActiveResource 是可行的方法。这是一个不错的introduction。
答案 1 :(得分:1)
查看HTTParty以便超级轻松地使用网络服务。基本上,你会做这样的事情:
class Ticket
include HTTParty
format :xml
end
@ticket = Ticket.get('http://url/to/ticket')
然后您可以访问哈希中的元素:
@ticket['title'] # => the <title> element
答案 2 :(得分:1)
获得xml数据后,您可以使用Active Support Hash扩展将其转换为哈希
xml = URI.parse("http://example.com?ticketid=1234").read
data = Hash.from_xml(xml)
这样你就不需要额外的lib了,并且想要遍历xml。 YMMV
注意:不确定此方法如何处理元素属性。
答案 3 :(得分:0)
您可以像这样使用Hpricot XML method:
require 'open-uri'
require 'hpricot'
@ticket = Hpricot.XML open "http://example.com?ticketid=1234"
然后,您可以使用Hpricot动态方法轻松解析@ticket
。请参阅Hpricot页面中的一些示例。