2016-06-29 4 views
1

リモートサーバーから非常に大きなXMLを取得して解析し、データを取得する必要があります。非常に巨大なXMLファイルをリモートサーバーから解析する方法

open()関数を使用してファイルを開こうとしましたが、15分以上かかるのにまだ応答がありません。

次に、Nokogiri :: XML(open(URL))を試しました。ここで、URLは、解析するデータを含むリンクです。

また、私はNet :: HTTP :: Getを使用してみましたが、実りある結果は得られませんでした。

どのような宝石や機能を使ってデータを解析することができますか?

答えて

0

大きなXMLファイルで作業している場合は、Nokogiri :: XML :: Readerクラスを使用できます。私は問題なく1GBのファイルを正常にオープンしました。最適なパフォーマンスを得るためには、最初にファイルをダウンロードして

使用量がこのような何か(あなたのパスにXML_FILEを置き換え)で、サーバー上とlocalY XML ::リーダークラスを使用してそれを解析できます。

Nokogiri::XML::Reader(File.open(XML_FILE)).each do |node| 
    if node.name == 'Node' && node.node_type == Nokogiri::XML::Reader::TYPE_ELEMENT 
    puts node.outer_xml # you can do something like this also Nokogiri::XML(node.outer_xml).at('./Node') 
    end 
end 

Heereがありますドキュメント:http://www.rubydoc.info/github/sparklemotion/nokogiri/master/Nokogiri/XML/Reader

は、ファイルの

+0

サイズは約2 GBですお役に立てば幸いです。 Nokogiri :: XML :: Readerクラスは役に立ちますか? –

+0

問題ではありません。しかし、私はNETオブジェクトまたは同様のものを使用してファイルをダウンロードし、次にローカルで解析すると言うでしょう。 Readerクラスは非常に大きなファイルを開くように設計されています。 –

+0

これを試してみましょう –

関連する問題