【问题标题】:Fast XML parsing with Nokogiri使用 Nokogiri 进行快速 XML 解析
【发布时间】: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 样本也很有帮助。没有它,您要求我们从您的代码中推断或构建一个工作示例,这通常无法正常工作。

标签: ruby nokogiri


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    相关资源
    最近更新 更多