2016-08-30 2 views
0

Ich muss extrem große XML-Datei (in der Nähe von 50 GB) analysieren, wie kann ich es mit Ruby tun? Es ist nicht möglich, es auf Stücke zu teilen, ich habe es bereits versucht.Parsing von großen Dateien mit Ruby

+0

https://github.com/ohler55/ox – coreyward

+0

Haben Sie diesen Post gesehen? http://stackoverflow.com/questions/6675128/how-doi-i-use-nokogirixmlreader-to-parse-large-xml-files Normalerweise verwende ich Nokogiri und streame das XML. – kcdragon

Antwort

2

Ich analysierte eine 40 GB-Datei mit Nokogiri::XML::Reader.

Struktur meiner XML-Datei:

<?xml version="1.0" encoding="utf-8"?> 
<posts> 
    <row Id="4"> 
    <row Id="5"> 
</posts> 

Code:

require 'nokogiri' 

fname = "Posts.xml" 
xml = Nokogiri::XML::Reader(File.open(fname)) 
xml.each do |posts| 
    posts.each do |post| 
    next if post.node_type == 14 # TYPE_SIGNIFICANT_WHITESPACE 
    # do something with post 
    end 
end 

Ich denke, die Antwort hängt davon ab, wie Sie die Daten zu verwenden. In meinem Fall musste ich einfach die Post-Knoten streamen.