2

最小サイズが 3GB の xml を分割する必要があります。Windows OS の 64 ビット JVM では、1.5GB のヒープ領域しか提供できません。VTDNavHuge ではなく、VTDNav のみを使用したサンプル コードをインターネット上で入手しました。議題は、上記の巨大な XML を読み取り、Xpath を使用してそこから特定のノードを抽出し、上記の抽出されたコンテンツで新しい XML を作成することです。VTD 拡張を使用して最大 256 GB のファイルを処理できることも言及されていましたが、常に OutOfMemomry 例外が発生します。それは VTDNavHuge を使用しています。提供された開発環境で上記のタスクを完了するためのサンプル コードを教えてください。>3GB サイズのファイルと 1.5GB のヒープスペース。VTD XML 拡張を使用してファイルを解析しているときに、メモリ マップ モードを使用しようとしています。

4

1 に答える 1

0

これは、拡張 VTD パーサーを使用して大きな XML ファイルを処理する方法のデモです。拡張 VTD を最大限に活用するには、64 ビット JVM が必要です。

import com.ximpleware.extended.*;
public class mem_mapped_read {
    public static void main(String[] s) throws Exception{
        VTDGenHuge vg = new VTDGenHuge();
        if (vg.parseFile("test.xml",true,VTDGenHuge.MEM_MAPPED)){
            VTDNavHuge vnh = vg.getNav();
        AutoPilotHuge aph = new AutoPilotHuge(vnh);
        aph.selectXPath("//*");
        int i = 0;
        while ((i=aph.evalXPath())!=-1){
            System.out.println(" element name is "+vnh.toString(i));
        }

        }
    }
}
于 2014-09-29T03:23:44.763 に答える