1

我有以下 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>

当我知道另一个节点的标签时,我想从 a 中选择第二个atom节点的标签。tupleatom

例如,如果我知道atom带有标签 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当我期望它是 X 时,变量是 A。

我究竟做错了什么?

4

1 回答 1

1

您将following-sibling轴放在错误的位置,但这很接近:

//field[@label = 'mapping']/tuple/atom[@label = 'A']/following-sibling::atom
于 2013-03-13T16:25:00.520 回答