2011-10-26 55 views
1

Jasper Report和XML數據源有一個奇怪的問題。我有兩個報告在iReport中很好用(預覽顯示所有正確的數據),但是當我使用JasperRunManager.runReportToPdfFile運行報告時,這些值顯示爲空。有趣的是,兩個報告中的一個報告有子報告,而在子報告中,一切正常顯示!生成報告時使用NULL值(使用Jasper Report)

我使用XPath像這樣的查詢:

<queryString language="xPath"> 
    <![CDATA[/rosterArray/list/studentRoster]]> 
</queryString> 

我只有一個字段:

<field name="studentName" class="java.lang.String"> 
    <fieldDescription><![CDATA[studentName]]></fieldDescription> 
</field> 

並顯示:

<detail> 
    <band height="30" splitType="Stretch"> 
     <textField> 
      <reportElement x="10" y="6" width="188" height="20"/> 
      <textElement/> 
      <textFieldExpression class="java.lang.String"><![CDATA[$F{studentName}]]></textFieldExpression> 
     </textField> 
    </band> 
</detail> 

XML是什麼樣子這個:

<rosterArray> 
    <list> 
     <studentRoster> 
     <studentName>Robert, Pascal</studentName> 
     </studentRoster> 
    </list> 
    </rosterArray> 

和代碼來創建生成的報告:

File xmlFileName = new File(xmlDSFileName()); 
JRXmlDataSource xmlDS = new JRXmlDataSource(xmlFileName); 
xmlDS.setDatePattern("yyyy-mm-dd HH:mm:ss.S z"); 

File destFile = File.createTempFile(compiledReportName, ".pdf"); 
String inputFileName = PathUtilities.pathToReport(compiledReportName); 

JasperRunManager.runReportToPdfFile(inputFileName, destFile.getPath(), parameters, dataSource); 

回答

0

當你創建JRXmlDataSource對象,你必須添加的XPath選擇查詢字符串變量定義的表達式。在你的情況,它應該是:

JRXmlDataSource xmlDS = new JRXmlDataSource(xmlFileName, "/rosterArray/list/studentRoster"); 

問候。

相關問題