Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 报表中的XML数据源不工作_Java_Xpath_Jasper Reports - Fatal编程技术网

Java 报表中的XML数据源不工作

Java 报表中的XML数据源不工作,java,xpath,jasper-reports,Java,Xpath,Jasper Reports,我想用Java中的XML数据源编译一个.JRXML文件。它在iReport中工作得非常好。在Java中,它不起作用 当我将主查询语言设置为“xpath”时,会生成报告,但其中没有xml数据 使用“xpath2”作为主要查询语言,我得到一个错误,没有为“xpath2”语言注册查询执行器工厂,并且没有生成报告 它甚至不适用于你能想到的最简单的报告 到目前为止,我所尝试的: 已检查jasperreports.properties中的以下行:net.sf.jasperreports.query.exec

我想用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.setPropertynet.sf.jasperreports.query.executer.factory.xpath2,com.jaspersoft.jrx.query.JRXPathQueryExecuterFactory; 在Java中设置XML数据源: org.w3c.dom.Document Document=JRXmlUtils.parseJRLoader.getLocationInputStreamargs[2]; params.putJRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT,DOCUMENT; 我的报告生成代码:


在将jasper-compiler-jdt-5.5.23.jar添加到Java构建路径之后,我消除了xpath2错误。报告已生成,但没有数据源。

它现在使用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"));

您应该发布完整的示例:Java代码+jrxml文件+xml文件。
org.w3c.dom.Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream("/file/location.xml"));
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JRXmlDataSource(document, "/xpath"));