我在ruby中使用快乐映射器进行对象映射,然后解析从api获取的.xml文件中的xml数据。
我在api响应中获取一个zip文件并将其解压缩以获得具有相同xml格式数据的5-6个文件。 每个文件中的数据大约为2-3 mb。
我想将这些数据保存在文件中,记住我应该可以对它执行搜索操作。 我不想使用关系数据库,而是希望将数据保存在文件中。 什么是保存数据的更好方法,这些方法对于对该数据执行后续搜索操作足够有效。
require 'json'
require 'happymapper'
file_contents = File.read('/home/GhostRider/x.xml')
class Message
include HappyMapper
tag 'Message'
element :color, String, :tag => 'Colour'
element :bg_color, String, :tag => 'BgColour'
end
class Status
include HappyMapper
tag 'Status'
element :text, String, :tag => 'Text'
element :color, String, :tag => 'Colour'
element :bg_color, String, :tag => 'BgColour'
has_one :message, Message
end
class Line
include HappyMapper
tag 'Line' # if you put class in module you need tag
element :name, String, :tag => 'Name'
element :color, String, :tag => 'Colour'
element :bg_color, String, :tag => 'BgColour'
element :url, String, :tag => 'Url'
has_one :status, Status
end
class Lines
include HappyMapper
tag 'Lines' # if you put class in module you need tag
has_many :lines, Line
end
item = Lines.parse(file_contents, :single => true)
item.lines.each do |i|
puts i.name, i.color, i.url, i.status.text, i.status.message.color
end
我需要保存这些获得的数据。
答案 0 :(得分:1)
更好的方法是使用xml选择器(如nokogiri或xml simple)或默认的Hash.to_xml(xml文件)来解析xml。然后分别定义ruby类,这有助于更好地控制类并执行操作。