Jasper reports 带有queryString的JRXmlDataSource不提供任何记录

Jasper reports 带有queryString的JRXmlDataSource不提供任何记录,jasper-reports,Jasper Reports,我对Jasper报告的XML数据源有问题。当我在JRXmlDataSource构造函数中使用selectExpression时,一切正常,但当我在.jrxml中使用queryString时,我没有得到任何记录 工作示例: JRXmlDataSource ds2 = new JRXmlDataSource(new FileInputStream(dataSourceFile), "/pages/page"); JRXmlDataSource ds1 = new JRXmlDataSource(n

我对Jasper报告的XML数据源有问题。当我在
JRXmlDataSource
构造函数中使用
selectExpression
时,一切正常,但当我在
.jrxml
中使用
queryString
时,我没有得到任何记录

工作示例:

JRXmlDataSource ds2 = new JRXmlDataSource(new FileInputStream(dataSourceFile), "/pages/page");
JRXmlDataSource ds1 = new JRXmlDataSource(new FileInputStream(dataSourceFile));

<jasperReport>
    <queryString language="xPath">
        <![CDATA[/pages/page]]>
    </queryString>
    ...
</jasperReport>
不起作用示例:

JRXmlDataSource ds2 = new JRXmlDataSource(new FileInputStream(dataSourceFile), "/pages/page");
JRXmlDataSource ds1 = new JRXmlDataSource(new FileInputStream(dataSourceFile));

<jasperReport>
    <queryString language="xPath">
        <![CDATA[/pages/page]]>
    </queryString>
    ...
</jasperReport>
JRXmlDataSource ds1=新的JRXmlDataSource(新的FileInputStream(dataSourceFile));
...
数据XML:

<?xml version="1.0" encoding="UTF-8"?>
<pages>
    <page>
        <firstname>X</firstname>
        <lastname>Y</lastname>
    </page>
    <page>
        <firstname>Z</firstname>
        <lastname>V</lastname>
    </page>
    <page>
        <firstname>B</firstname>
        <lastname>S</lastname>
    </page>
</pages>

X
Y
Z
v
B
s

我找到了解决办法。不需要将XML数据源传递给
JasperFillManager
,而是可以像下面这样传递XML文档。现在
.jrxml
模板中的XPath可以处理传递的文档,这就是我想要的

Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream(dataSourceFile));
params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, document);
jasperPrint = JasperFillManager.fillReport(jasperReport, params);

您是否在带有附加数据源的
iReport
中检查了您的报告?奇怪的是,在iReport中,同样的
queryString
嵌入在
.jrxml
中。我不明白有什么问题。这就是我要找的,谢谢