如何在ruby中解析大型xml文件



我需要用ruby解析一个大的(4gb) xml文件,最好使用nokogiri。我见过很多使用

的代码示例
File.open(path)

但是这对我来说太花时间了。是否有一个选项来逐节点读取xml,以防止在一个节点上加载文件。或者解析如此大的文件的最快方法是什么。最好的菲尔。

您可以尝试使用Nokogiri::XML::SAX

SAX风格解析器的基本工作方式是创建一个解析器,告诉解析器我们感兴趣的事件,然后给出解析器要处理一些XML。解析器将在此情况下通知您遇到你想知道的事情。

我使用LibXML http://xml4r.github.io/libxml-ruby/(require 'xml')和它的LibXML::XML::Reader API来做这种工作。它比SAX更简单,并且允许您做几乎所有的事情。REXML也包含一个类似的API,但是它有很多bug。像我提到的流api或SAX在处理大文件时不应该有任何问题。我没有测试过Nokogiri

您可以尝试一下- https://github.com/amolpujari/reading-huge-xml

HugeXML.read xml, elements_lookup do |element| # => element{ :name, :value, :attributes} end

我也试过使用ox

相关内容

  • 没有找到相关文章

最新更新