我正在使用VTD-XML来合并大小超过800MB的xml文件 文件大小(达到2GB的可能性很高)。 如果名称空间感知,我已经阅读了可以支持2GB的文档 设为false。 话虽如此,我怎样才能正确使用selecXPath()evalXPath()和 getAttrVal()等..? 因为我收到命名空间错误,但如果我可以正常运行 切换到名称空间感知真实。
VTDNav gmlNav = null;
//if(! gen.parseFile(gmlFile, true)) return;
if(! gen.parseFile(gmlFile, false)) return;
gmlNav = gen.getNav();
AutoPilot gmlAutoPilot = new AutoPilot(gmlNav);
//gmlAutoPilot.declareXPathNameSpace("xlink","http://www.w3.org/1999/xlink");
//gmlAutoPilot.declareXPathNameSpace("gml","http://www.opengis.net/gml/3.2");
//sourceAutoPilot.selectXPath("//*[gml:id='123' or gml:id='456']");
sourceAutoPilot.selectXPath("//*[id='123' or id='456']");
while (sourceAutoPilot.evalXPath() != -1) {
//String gmlId = sourceNav.toString(sourceNav.getAttrVal("gml:id"));
String gmlId = sourceNav.toString(sourceNav.getAttrVal("id"));
}
注意:注释的代码是名称空间感知的真实。
感谢任何指导。
答案 0 :(得分:0)
您需要使用扩展的VTD-XML,它在命名空间方面没有标准vtd-xml的限制。在标准vtd-xml中,如果启用了命名空间感知,则最大文档大小为1GB。