我正在使用 VTD-XML 合并我的 xml 文件,这些文件的文件大小超过 800MB(很有可能达到 2GB)。如果命名空间感知设置为 false,我已经阅读了可以支持 2GB 的文档。话虽如此,我怎样才能正确使用 selecXPath() evalXPath() 和 getAttrVal() 等。因为我收到一个命名空间错误,但如果我切换到命名空间感知 true,则可以正常运行。
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"));
}
注意:注释代码是命名空间感知的真实。
任何指导表示赞赏。