2012-03-01 5 views
4

Jasper Reports 용 XML 데이터 소스에 문제가 있습니다. 내가 JRXmlDataSource 생성자에서 사용할 때 모든 작동하지만 .jrxml에서 queryString 사용할 때 레코드가 없습니다.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'에서 첨부 된 데이터 소스로 보고서를 확인 했습니까? –

+1

이상하게도 iReport에서'.jrxml'에 내장 된 동일한 'queryString'이 작동합니다. 나는 그 문제가 무엇인지 이해하지 못한다. – marioosh

답변

6

내가 찾은 솔루션입니다. XML 데이터 소스를 JasperFillManager에 전달하는 대신 다음과 같은 XML 문서를 전달할 수 있습니다. 이제 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

그게 내가 뭘 찾고있어, 감사합니다 Logged –

관련 문제