1

我想使用 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) 时它失败了。我不断收到无效的导航。无论如何我可以导航到任何元素吗?

4

1 回答 1

1

您不能要求 vtdNav 转到任何索引值,VTD-XML 不能那样工作,原因很简单,索引不能保证是元素的类型。

您可以通过多种方式保存/加载节点位置,或从索引值中恢复节点位置。但一般来说,节点位置不能保证是有效的树位置(属性值,例如)......

于 2011-06-30T07:16:35.357 回答