Jasper reports 带有queryString的JRXmlDataSource不提供任何记录
我对Jasper报告的XML数据源有问题。当我在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
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
中。我不明白有什么问题。这就是我要找的,谢谢