2013-03-13 113 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

相关问题