在Rails中将XML文件数据填充到db

为了处理一些客户端信息,我一直在用hpricot解析一个3MB的XML文件......但是hpricot需要花费很长时间来定期解析文件。 我正在考虑将这些数据填充到MySql数据库(每周一次),以便我可以使用rails直接在mysql上处理数据。 该文件基本上是一个XML Google联系人文件,其中包含客户信息:姓名,电子邮件,备注......但某些联系人还包含多个值字段,如地址,电话。 目前,当我解析数据时,我生成了一个Contact类
class Contact <
  Struct.new(:name, :email, :telephones, :addresses, :user_address,:notes)
end
telephones
addresses
包含具有不同值的数组。 我想如果我想在mysql数据库中重新创建这个结构,我需要创建三个表:联系人,电话和地址......
class Contact < ActiveRecord::Base
  has_many :addresses
  has_many :telephones
end

class Telephone < ActiveRecord::Base
  belongs_to :contact
end

class Address < ActiveRecord::Base
  belongs_to :contact
end
您如何将
Contact class
数据填充到数据库表中? 有没有办法将数据直接从XML文件插入数据库表? 任何建议和指导将不胜感激:) 谢谢!     
已邀请:
首先,为什么不尝试nokogiri,看看它是否更快? Rails认为人们最好的做法,他们开始相信有一个关于如何为任何特定问题编程的方法。不幸的是情况并非如此,因为通常90%的任务都没有魔力。 因此,如果您与某些地址和某些电话有联系,那就是这样。 这就是我要做的事情: 解析XML文件,如果它太大,则流解析。 对于其中的每个联系人输出一个哈希,就像
params[:contact]
通常在提交表单后在控制器中结果,并使
Contact
模型使用accepts_nested_attributes_for。
contact = {
  :name => xxx, 
  :user_address => xxx, 
  :notes => xxx
  :addresses_attributes => [
    {:some_attribute => xxx, :some_other_attribute => xxx}
    ...
  ],
  :telephones_attributes => [
    { :some_attribute => xxx, :some_other_attribute => xxx}
    ...
  ]
}
现在剩下的就是:
Contact.create(contact)
    

要回复问题请先登录注册