【发布时间】:2012-11-22 08:07:14
【问题描述】:
我正在使用 Ruby 和 Nokogiri 解析一个 XML 文件,但是我在执行时间方面遇到了一些问题。 4000 行需要一分钟 - 这太多了。我正在尝试寻找一些代码优化的想法。
这是代码示例:
input = Nokogiri::XML(File.open(file_name))
input.xpath('//Transition').each do |transition_record|
from = transition_record.xpath('@From')
to = transition_record.xpath('@To')
name = transition_record.xpath('@Name')
Transition.create do |transition|
transition.from_id = from.to_s
transition.to_id = to.to_s
transition.name = name.to_s
if transition_record.at_xpath('Condition').at_xpath('@Type')
transition.condition = transition_record.at_xpath('Condition').at_xpath('@Type').to_s
end
end
end
Transition 在 XML 中的位置不是固定的,可以在任何级别。另外,我正在以某种方式解析其他三个标签。
有人知道如何改进它吗?
【问题讨论】:
-
Nokogiri 非常快。我会先看看你的模型/数据库是问题所在。
-
我没想到。真的,用 postgr 而不是 litesql 一切都更好。谢谢!
-
对于这类问题,提供一小部分 XML 样本也很有帮助。没有它,您要求我们从您的代码中推断或构建一个工作示例,这通常无法正常工作。