vtd-xml Что мне нужно сделать, перейти к любому элементу - PullRequest
1 голос
/ 09 июня 2011

Я хочу перемещаться по XML с помощью vtd-xml, и я хочу перейти к любому индексу, заданному XPath. Например:

vg.parseFile("/tmp/somexml.xml",true);
VTDNav vn = vg.getNav();                
AutoPilot ap = new AutoPilot();
ap.selectXPath("//someelement");                
ap.bind(vn);
for (int i = ap.evalXPath(); i != -1;) {
try {                        
vn.toElement(i);                                               
} catch (Exception ex) {
logger.error(null, ex);
}

Я отлаживал и, например, получаю индекс 40, но когда я пытаюсь выполнить toElement (40), он не работает. Я продолжаю получать неверную навигацию. Есть ли в любом случае я могу перейти к любому элементу?

1 Ответ

1 голос
/ 30 июня 2011

Вы не можете попросить vtdNav перейти к какому-либо значению индекса, VTD-XML не работает так по той простой причине, что индекс не гарантированно относится к типу элемента.

Существуют способы сохранить / загрузить позицию узла или восстановить позицию узла по значению индекса. Но в целом позиция узла не гарантируется как правильная позиция дерева (например, значение атрибута) ...

...