2011-06-09 18 views
1

我想使用vtd-xml導航xml,並且我想導航到由XPath給出的任何索引。例如:vtd-xml我需要做什麼去任何元素

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,但是當我嘗試元素(40)失敗。我一直得到無效的導航。無論如何,我可以導航到任何元素?

回答

1

您不能要求vtdNav轉到任何索引值,VTD-XML不能像那樣工作,原因很簡單,因爲索引不能保證是元素類型。

有多種方法可以保存/加載節點位置,或從索引值恢復節點位置。但通常節點位置不能保證是有效的樹位置(屬性值例如)...

+0

因此,沒有辦法將此庫用於隨機訪問?這只是順序? – ghm1014 2011-07-05 13:15:37

+0

使用VTDNav的toElement()並給它一個directiona參數,你會得到隨機訪問。然而,它與DOM有點不同。 – 2011-07-10 20:51:38

相關問題