带有queryString的JRXmlDataSource不提供任何记录 [英] JRXmlDataSource with queryString give no records
问题描述
我遇到了Jasper Reports的XML数据源问题。当我在 JRXmlDataSource
构造函数中使用 selectExpression
时,一切正常,但是当我使用 queryString
在 .jrxml
中,我没有记录。
I have a problem with XML datasource for Jasper Reports. When i use selectExpression
in JRXmlDataSource
constructor, everything works, but when i use queryString
in .jrxml
, i get no records.
工作示例:
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>
数据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>
推荐答案
我找到了解决方案。它不是将XML dataSource传递给 JasperFillManager
,而是可以传递一个XML文档,如下所示。现在XPath在< queryString language =xPath>
里面 .jrxml
模板适用于传递的文件,就是这样我想要的是什么。
I have found solution. Instead of passing a XML dataSource to JasperFillManager
, it can be passed an XML document like below. Now XPath in <queryString language="xPath">
inside .jrxml
template works on passed document and that's it what i want.
Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream(dataSourceFile));
params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, document);
jasperPrint = JasperFillManager.fillReport(jasperReport, params);
这篇关于带有queryString的JRXmlDataSource不提供任何记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!