Когда вы закончите анализ xml с VTD-XML, позиция курсора по умолчанию для VTDNav находится на узле корневого элемента.В вашем случае это на узле ROOT.Поэтому, когда вы запускаете xpath «ROOT / STUDENT [(not (DATE) или DATE = '')] / NAME», вы фактически запрашиваете узел / ROOT / ROOT / STUDENT / NAME.
Самое простое исправление - изменить XPath на STUDENT [(not (DATE) или DATE = '')] / NAME, который является относительным xpath.
Или вы можете использовать абсолютный xpath/ ROOT / STUDENT [(not (DATE) или DATE = '')] / NAME.
Или вы можете сначала вызвать метод toElement () VTDNav и присвоить ему параметр "PARENT", чтобы переместить курсор наузел документа ... он тоже будет работать
После нескольких испытаний с моей стороны я обнаружил, что это ошибка в методе внутри класса VTDNav с именем
XPathStringVal_Matches (int j, String s);
Вам будет удобно вырезать / вставить какой-нибудь код для исправления ошибки?
Я предоставлю вам инструкцию, которую очень легко исправить ...