marip Posted February 10, 2012 Share Posted February 10, 2012 Hi! I am evaluating jasperreports and struggling with xml data source. I want to use jaxen because xalan library causes some trouble in my app's xml handling. I have defined XML file datasource. See attached xml. Tools -> Options -> JasperReports Properties has default line for net.sf.jasperreports.xpath.executer.factory = net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory Then I have a sub data set in my template. See attached xml. It builds allright but preview causes an error when evaluating expression: net.sf.jasperreports.engine.data.JaxenXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//row"). Preview works if I cast to JRXmlDataSource instead. See error stack attached.Is there a problem in xml file data source or in jasperreports properties? Code:PRODUCT VERSION:Product Version: Jaspersoft iReport Designer Professional 4.5.0Java: 1.7.0_02; Java HotSpot(TM) Client VM 22.0-b10System: Windows 7 version 6.1 running on x86; Cp1252; en_US (ireportpro)ERROR:Error filling print... Error evaluating expression :     Source text : ((net.sf.jasperreports.engine.data.JaxenXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//row") Setting up the file resolver... net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :     Source text : ((net.sf.jasperreports.engine.data.JaxenXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//row")     at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:203)     at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591)     at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559)     at net.sf.jasperreports.components.list.FillDatasetRun.evaluate(FillDatasetRun.java:103)     at net.sf.jasperreports.components.list.BaseFillList.evaluate(BaseFillList.java:102)     at net.sf.jasperreports.engine.fill.JRFillComponentElement.evaluate(JRFillComponentElement.java:88)     at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257)     at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:473)     at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2021)     at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:755)     at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:265)     at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)     at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836)     at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:118)     at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:435)     at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:271)     at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:991)     at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)     at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997) Caused by: java.lang.ClassCastException: net.sf.jasperreports.engine.data.JRXmlDataSource cannot be cast to net.sf.jasperreports.engine.data.JaxenXmlDataSource     at snmp45details_1328861141538_621235.evaluate(snmp45details_1328861141538_621235:175)     at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190)     ... 18 more XML FILE DATASOURCE:<iReportConnection name="test-xml-source" connectionClass="com.jaspersoft.ireport.designer.connection.JRXMLDataSourceConnection"> <connectionParameter name="NumberPattern"><![CDATA[]]></connectionParameter> <connectionParameter name="DatePattern"><![CDATA[]]></connectionParameter> <connectionParameter name="UseConnection"><![CDATA[true]]></connectionParameter> <connectionParameter name="SelectExpression"><![CDATA[]]></connectionParameter> <connectionParameter name="Filename"><![CDATA[C:\Users\mari\poc-jasper\report.xml]]> </connectionParameter></iReportConnection>REPORT:<jasperReport> ... <datasetRun subDataset="dataset1"> <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JaxenXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//row")]]> </dataSourceExpression> </datasetRun> ...</jasperReport> Link to comment Share on other sites More sharing options...
marip Posted February 13, 2012 Author Share Posted February 13, 2012 I am not sure what happened but JaxenXMLDataSource was working correct after the weekend / reboot. Case resolved for now. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now