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>

他のノードのラベルがわかっているときに、atomから2番目のノードのラベルを選択したいと思います。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();
}

labelXであると予想される場合、変数はAです。

私は何が間違っているのですか?

4

1 に答える 1

1

following-sibling軸が間違った場所にありますが、それは近いです:

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