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 не работает так по той простой причине, что индекс не гарантированно относится к типу элемента.
Есть способы сохранить / загрузить позицию узла или восстановить позицию узла по значению индекса. Но в целом позиция узла не гарантируется как правильная позиция дерева (например, значение атрибута)...