require 'active_support/core_ext'
require 'open-uri'
require 'zip/zip'
zipfilename = open(url which returns a zip file with no of xml files inside)
Zip::ZipFile.open(zipfilename) do |zipfile|
zipfile.each do |entry|
xml = File.open(entry).read
xml_to_hash = Hash.from_xml(xml)
end
end
当我打印尝试打印变量条目时,它以file_name.xml形式出现。错误来自 xml = File.open(entry).read。
错误:
test.rb:51:in `initialize': can't convert Zip::ZipEntry into String (TypeError)
from test.rb:51:in `open'
from test.rb:51:in `block (2 levels) in <main>'
答案 0 :(得分:4)
而不是
xml = File.open(entry).read
试
xml = zipfile.read(entry)
答案 1 :(得分:2)
你正在迭代的entry
不是真正的文件。它只代表存档中的文件。我认为您需要将类型为Zip::ZipEntry
的条目转换为可以读取的内容。
请参阅http://rubyzip.sourceforge.net/classes/Zip/ZipFile.html
上的示例据我所见,你可以通过拨打get_input_stream
或者只是致电阅读:http://rubyzip.sourceforge.net/classes/Zip/ZipEntry.html#M000135