报告中的XML数据源无法正常工作

时间:2014-08-06 06:45:22

标签: java xpath jasper-reports

我想用Java编译带有XML数据源的.JRXML文件。它在 iReport 中完美运行。在Java中,它不起作用。

当我将主查询语言设置为'xpath'时,会生成报告,但其中没有xml数据。

以'xpath2'作为主要查询语言,我收到错误“没有为'xpath2'语言注册的查询执行器工厂”并且没有生成报告。

它甚至不能用你能想到的最简单的报告。

到目前为止我尝试了什么:

  • 检查jasperreports.properties中的以下行:net.sf.jasperreports.query.executer.factory.xpath2 = com.jaspersoft.jrx.query.JRXPathQueryExecuterFactory
  • 在我的应用程序类路径中检查.jar文件“jasperreports-extensions-3.5.3.jar”
  • 在我的Java代码中添加了这一行: jasperReport.setProperty(“net.sf.jasperreports.query.executer.factory.xpath2”,“com.jaspersoft.jrx.query.JRXPathQueryExecuterFactory”);
  • 在Java中设置XML数据源: org.w3c.dom.Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream(args [2])); params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT,document);

我的报告生成代码:

JasperReport jasperReport = JasperCompileManager.compileReport(args[0]);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(jasperPrint, args[1]);

将jasper-compiler-jdt-5.5.23.jar添加到我的Java Build Path之后,我摆脱了xpath2错误。生成报告,但没有数据源。

1 个答案:

答案 0 :(得分:0)

现在可以使用xpath数据源。我在Java应用程序中创建了数据源,而不是传递XML_URL。这不是完美的,而是一个很好的解决方法。这是我使用的代码:

org.w3c.dom.Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream("/file/location.xml"));
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JRXmlDataSource(document, "/xpath"));