1

我正在使用 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"));
}

注意:注释代码是命名空间感知的真实。

任何指导表示赞赏。

4

1 回答 1

0

您将需要使用扩展的 VTD-XML,它在命名空间方面没有标准 vtd-xml 的限制。在标准 vtd-xml 中,如果打开命名空间感知,则最大文档大小为 1GB。

于 2011-06-30T07:18:27.467 回答