Java:VTD-XML 2.10:如何:获取没有名称空间感知的属性val?

时间:2011-06-14 00:42:08

标签: java xml vtd-xml

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

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

感谢任何指导。

1 个答案:

答案 0 :(得分:0)

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