2

我必须拆分一个最小大小为 3GB 的 xml。我们在 Windows 操作系统上的 64 位 JVM 中只能提供 1.5GB 的堆空间。我在整个 Internet 上都获得了仅使用 VTDNav 的示例代码,而不是 VTDNavHuge。议程是读取上述巨大的 XML 并使用 Xpath 从中提取一个特定的节点,并使用上述提取的内容创建一个新的 xml。我总是遇到 OutOfMemomry 异常,尽管有人提到我们也可以使用 VTD 扩展来处理高达 256GB 的文件。那是使用 VTDNavHuge。请帮助我提供示例代码以在提供的开发环境下完成上述任务。>3GB 大小的文件和 1.5GB 堆空间。我在解析扩展了 VTD XML 的文件时尝试使用内存映射模式。

4

1 回答 1

0

这是一个演示如何使用扩展的 VTD 解析器来处理大型 XML 文件。您需要 64 位 JVM 才能充分利用扩展的 VTD。

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 回答