我想打印出将查询与 | 组合在一起的 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
某处必须执行我的循环两次。我不知道那是什么。这对我来说没有意义,因为该分组表达式中有 3 个结果集,因此计数器为 3。我在调试时检查了这个。这个'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>