Открытие и распаковка XML-URL в Rails - PullRequest
0 голосов
/ 30 апреля 2010

Я создаю приложение rails, которое получает информацию о продуктах из потока данных XML, размещенного на стороннем сервере. Этот XML отправляется в сжатом виде, и у меня возникли серьезные трудности с получением чего-либо с ним.

Я потратил немало времени с Google на это, но результаты моего поиска, похоже, больше касаются отправки вывода Gzipped, а не получения ввода Gzipped.

Закрытое Я пришел к решению от 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-адрес действителен, а ответ - Gzipped, но я застрял в том, как обойти это.

Любая помощь будет принята с благодарностью: -)

1 Ответ

3 голосов
/ 13 мая 2010

Рассортировано!

file = Net::HTTP.get(URI.parse(url))
gz = Zlib::GzipReader.new(StringIO.new(file))
whole_xml = gz.read

Затем загрузить в Hpricot для анализа XML:

hp = Hpricot(whole_xml)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...