1

我正在用 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 中没有固定的位置,可以在任何级别。另外,我正在以某种方式解析其他三个标签。

有人对我如何改进有任何想法吗?

4

1 回答 1

0

您可以重新组织您的代码,以便使用 Nokogiri 创建一个哈希数组,然后您可以直接在create. 这将允许您分别为每个部分计时。我想你会发现 Nokogiri 不是问题所在。

于 2012-11-21T22:08:20.417 回答