我有以下XML
<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>
当我知道另一个atom
的标签时,我想从tuple
中选择第二个atom
节点的标签。
例如,如果我知道带有标签A的atom
,我想获得带有标签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时。
我做错了什么?
答案 0 :(得分:1)
你的following-sibling
轴位置错误,但是接近:
//field[@label = 'mapping']/tuple/atom[@label = 'A']/following-sibling::atom