【发布时间】:2012-08-26 11:52:38
【问题描述】:
我想打印一个 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>
【问题讨论】:
-
能否请您发布一个
bars.xml的缩略样本? -
`
`条形图:长度 项目 长度 25 条形>90 -
您能在方法的开头和结尾处
System.out.println吗?这将告诉您它是否是您向我们展示的代码中的问题,是否与 XPath 有任何关系,或者您的方法是否被其他代码调用了两次。 -
无法重现:在提供的 XML 文档上评估提供的 XPath 表达式时,仅选择了一个文本节点(“长度”)。请编辑问题并提供与您报告的结果不矛盾的 XML 文档和 XPath 表达式。
标签: java xml loops xpath repeat