我想使用vtd-xml导航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)时它失败了。我一直得到无效的导航。无论如何我可以导航到任何元素?
答案 0 :(得分:1)
你不能要求vtdNav转到任何索引值,VTD-XML不能像那样工作,原因很简单,因为索引不能保证是元素类型。
您可以通过多种方式保存/加载节点位置,或从索引值恢复节点位置。但一般来说,节点位置不能保证是有效的树位置(属性值,例如......)......