Java: VTD-XML 2.10: Как получить атрибут val без учета пространства имен? - PullRequest
1 голос
/ 14 июня 2011

Я использую VTD-XML для объединения моих XML-файлов, размер которых превышает 800 МБ (высокая возможность получить 2 ГБ).Я прочитал документацию, которая может поддерживать 2 ГБ, если для пространства имен установлено значение false.С учетом сказанного, как я могу правильно использовать 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"));
}

примечание: закомментированные коды - это true с учетом пространства имен.

Любые указания приветствуются.

1 Ответ

0 голосов
/ 30 июня 2011

Вам нужно будет использовать расширенный VTD-XML, который не имеет ограничений стандартного vtd-xml с точки зрения пространства имен. В стандартном vtd-xml, если включена поддержка пространства имен, максимальный размер документа составляет 1 ГБ.

...