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