我正在构建一个rails应用程序,它从第三方服务器上托管的XML数据源中获取有关产品的信息。这个XML被gzip压缩,我很难用它去任何地方。
我在Google上花了相当多的时间,但我的搜索结果似乎更多是关于发送Gzip压缩输出而不是接收Gzip压缩输入。
关闭我来自StackOverflow的解决方案,但我仍然遇到错误。
我在第一个实例中尝试将XML数据打印到浏览器,然后我可以从处理它开始。这是我目前的代码:
def load_data url = "http://xml.domain.com/datafeed/" xml_input = Net::HTTP.get(URI.parse(url)) zstream = Zlib::Inflate.new @xml_output = zstream.inflate(xml_input) zstream.finish zstream.close end
我从中获得的错误是:
Zlib::DataError in Cron/get datafeedController#load_data
不正确的标题检查
我想这意味着数据不是预期的格式,但我无法找到有关如何在任何地方正确执行此操作的信息。我已经排除的两件事是URL有效且响应是Gzip,但我仍然坚持如何克服这个问题。
非常感谢任何帮助: - )
答案 0 :(得分:3)
排序!
file = Net::HTTP.get(URI.parse(url))
gz = Zlib::GzipReader.new(StringIO.new(file))
whole_xml = gz.read
然后加载到Hpricot进行XML解析:
hp = Hpricot(whole_xml)