vtd-xml Что мне нужно сделать, перейти к любому элементу

Я хочу перемещаться по 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 ответ

Решение

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

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

Другие вопросы по тегам