2013-03-13 118 views
1

我有下面的XML獲取XML節點的兄弟使用XPath

<field label="mapping"> 
     <tuple> <atom label="A"/> <atom label="X"/> </tuple> 
     <tuple> <atom label="B"/> <atom label="Y"/> </tuple> 
     <tuple> <atom label="C"/> <atom label="Z"/> </tuple> 
    </field> 

我想選擇從tuple第二​​節點的標籤時,我知道其他​​的標籤。

例如,如果我知道​​與標籤A,我想與標籤X.

我寫這個XPath表達式的原子,但它不會做的伎倆:

//following-sibling::field[@label = 'mapping']/tuple/atom[@label = 'A'] 

如果我寫

XPath expr = xpath.compile("//following-sibling::field[@label = 'mapping']/tuple/atom[@label = 'A']"); 
NodeList nodes = ((NodeList) expr.evaluate(doc, XPathConstants.NODESET)); 
for (int j=0;j<nodes.getLength();j++){ 
    String label = nodes.item(j).getAttributes().getNamedItem("label").getNodeValue(); 
} 

變量label是A,我希望它是X.

我在做什麼錯?

回答

1

你在錯誤的地方following-sibling軸,但很接近:

//field[@label = 'mapping']/tuple/atom[@label = 'A']/following-sibling::atom 
+0

哇哦!沒有看到。謝謝!它有效,但現在我感到很蠢。 – 2013-03-13 16:28:13

+0

哈哈沒問題,我們都有那些日子。 – JWiley 2013-03-13 16:29:05

相關問題