Java XPath查询循环运行两次的结果?

Java XPath查询循环运行两次的结果?,java,xml,loops,xpath,repeat,Java,Xml,Loops,Xpath,Repeat,我想打印一个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");

我想打印一个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());
            }
        }
public void loadData(){
dl.loadDocuments(“input\\bar.xml”);
试一试{
XPath yAxisTitle=XPath.newInstance(//y轴标题/text()|/bar图表/bar/bar[@number='4']/value/text()|/bar[@number='5']/value/text());
List elements=(List)yAxisTitle.selectNodes(dl.getInputDocument());

对于(inti=0;i,感谢O.R.Mapper,它解决了我的问题

修复
从Exercise1类的构造函数中删除loadData()(与loadData()的内容所在的类相同,如我的问题所示)

问题是loadData()已在其他地方被调用:
在我的控制器类的构造函数中:

public SimpleXPathController(ISimpleXPath doc){
    model = doc;
    model.loadData();
}
在Exercise1类的构造函数中:

public Exercise1(){
    dl = new DocumentLoader();
    loadData();
}
最后,在我的UI类中,我有一个调用:

SimpleXPathController simpleXPathController = new SimpleXPathController(new Exercise1());
导致:
1) 正在调用loadData()的控制器
2) 练习1实例正在调用loadData()

我通过放置:

System.out.println(“testing1”);在try{}块的开头

try{}块末尾的System.out.println(“testing2”)


问题已解决。

您能否发布一个
Bar.xml
的缩写示例?`Bar Chart:Length Items Length 25 90`您能否
System.out.println
方法开头和结尾的内容?这将告诉您在向我们展示的代码中是否存在问题,并与XPath相关ny方式,或者您的方法是否被其他代码调用了两次。无法重新编程:在提供的XML文档上计算提供的XPath表达式时,仅选择一个文本节点(“长度”)。请编辑问题,并提供与报告的结果不矛盾的XML文档和XPath表达式。
public SimpleXPathController(ISimpleXPath doc){
    model = doc;
    model.loadData();
}
public Exercise1(){
    dl = new DocumentLoader();
    loadData();
}
SimpleXPathController simpleXPathController = new SimpleXPathController(new Exercise1());