2012-03-01 63 views
4

Jasper Reports的XML數據源有問題。當我在JRXmlDataSource構造函數中使用selectExpression時,一切正常,但是當我在.jrxml中使用queryString時,我沒有記錄。帶查詢字符串的JRXmlDataSource不給記錄

工作示例:

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> 
+0

您是否在附帶數據源的'iReport'中檢查了您的報告? – 2012-03-01 14:01:54

+1

在iReport中奇怪的是嵌入在'.jrxml'中的'queryString'工作正常。我不明白是什麼問題。 – marioosh 2012-03-02 07:02:45

回答

6

我已經找到了解決方案。它可以傳遞一個如下所示的XML文檔,而不是將XML數據源傳遞給JasperFillManager。現在XPath在<queryString language="xPath">裏面.jrxml模板對通過的文件起作用,這就是我想要的。

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

這就是我一直在尋找的,謝謝 – 2014-07-10 08:30:13