クエリと|を組み合わせたXPath式のグループ結果を出力したい。オペレーター。(動作しますが、問題があります)
私のXPath式は次のとおりです。
//y-axis-title/text() | /bar-chart/bars/bar[@number='4']/value/text() |//bar[@number='5']/value/text()
私のコード:
public void loadData() {
dl.loadDocuments("input\\bars.xml");
try {
XPath yAxisTitle = XPath.newInstance("//y-axis-title/text() | /bar-chart/bars/bar[@number='4']/value/text() | //bar[@number='5']/value/text()");
List<Text> elements = (List<Text>)yAxisTitle.selectNodes(dl.getInputDocument());
for(int i=0; i<elements.size(); i++){
System.out.println(elements.get(i).getText());
}
} catch (JDOMException jde){
System.out.println("JDOMException at Exercise1.loadData(): "+ jde.getMessage());
}
}
問題は、これを出力することです。
長さ 140 120 長さ 140 120
これを印刷することだけが想定されていますが(私の期待される結果):
長さ 140 120
どこかで何かが私のループを2回実行しているに違いありません。何なのかわかりません。そのグループ化された式内に3つの結果セットがあり、そのためカウンターが3であるため、私には意味がありません。デバッグ中にこれを確認しました。この「2」(つまり、2回実行)はどこから来ていますか?
期待どおりの結果が得られるように、これを修正するにはどうすればよいですか?
ありがとう。
編集:サンプルbars.xml
<?xml version="1.0"?>
<bar-chart>
<title>Bar Chart: Lengths</title>
<x-axis-title>Items</x-axis-title>
<y-axis-title>Length</y-axis-title>
<value>25</value>
<bars>
<bar number="1">
<value>90</value>
</bar>
</bars>
</bar-chart>