Foros del Web » Programación para mayores de 30 ;) » Java »

Jasper Report a partir de un XML

Estas en el tema de Jasper Report a partir de un XML en el foro de Java en Foros del Web. Buenas, tengo un problemilla a la hora de rellenar mi report a partir de un XML en lugar de con una consulta de la Base ...
  #1 (permalink)  
Antiguo 12/11/2007, 12:13
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Jasper Report a partir de un XML

Buenas, tengo un problemilla a la hora de rellenar mi report a partir de un XML en lugar de con una consulta de la Base de Datos. A la hora de llamar al método fillReport le paso un JRXmlDataSource en vez de un JRDataSource, la cuestión es que compila y eso pero a la hora de ejecutar el reporte me aparece vacío.
El informe lo creo con el iReport y me compila y todo perfectamente usando el XML.

¿Alguien sabe cómo puedo hacer esto?

Muchas gracias por adelantado.

Saludos
  #2 (permalink)  
Antiguo 12/11/2007, 12:31
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Jasper Report a partir de un XML

Cita:
El informe lo creo con el iReport y me compila y todo perfectamente usando el XML.
¿Esto quiere decir que usando el iReport puedes ver el informe todo rellenado con sus datos etc. y solo es al ejecutarlo en tu programa que no se te llena?

S!
  #3 (permalink)  
Antiguo 12/11/2007, 18:02
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Jasper Report a partir de un XML

Efectivamente, lo hace perfectamente, pero dspues me sale todo a null.
  #4 (permalink)  
Antiguo 13/11/2007, 02:02
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Jasper Report a partir de un XML

Umm, pues si te pasa eso normalmente es por que no se ha inicializado correctamente la "raiz" del documento XML.

Comprueba que al crear la theJRXmlDataSource le indicas correctamente la "selectExpression" para que sepa cual es el elemento que se repite.

O al menos a mi cuando me queda el documento en blanco, eso es lo que me suele pasar.

S!
  #5 (permalink)  
Antiguo 13/11/2007, 08:20
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Jasper Report a partir de un XML

Lo primero muchas gracias por contestar.

Cuando creo la JRXmlDataSource simplemente le paso el documento XML, soy bastante novato en esto y pensaba que todo esto de la raiz y demás peculiaridades estaban intrínsecas en el .jrxml.

¿Puedes contarme algo más sobre esto de la "selectExpression" y cual es el procedimiento para hacer lo que yo intento?

Muchas gracias de nuevo.
  #6 (permalink)  
Antiguo 13/11/2007, 15:05
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Jasper Report a partir de un XML

Y cuando lo pones en el iReport y declaras la fuente de datos, ¿Usas "crear una fuente de datos usando esta expresion"?

¿O como le indicas cuales son los items sobre los que basar el report?
  #7 (permalink)  
Antiguo 15/11/2007, 03:26
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Jasper Report a partir de un XML

Efectivamente, la expresion que le introduzco es "/listado/registros/registro" y el xml que tengo es el siguiente:

<?xml version="1.0" encoding="iso-8859-1" ?>
- <listado>
- <cabecera>
<fecha_inicio>01-09-2007</fecha_inicio>
<fecha_fin>09-11-2007</fecha_fin>
</cabecera>
- <registros>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
- <registro>
<facNumero>B85/07</facNumero>
<cliNombre>INTERNETAMEDIDA S.L.</cliNombre>
<facImporte>1.249,99</facImporte>
<facImpCobrado>1.249,99</facImpCobrado>
</registro>
- <registro>
<facNumero>B86/07</facNumero>
<cliNombre>GRUPO 2000</cliNombre>
<facImporte>210</facImporte>
<facImpCobrado>110</facImpCobrado>
</registro>
</registros>
</listado>

Gracias siempre.
  #8 (permalink)  
Antiguo 15/11/2007, 05:12
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Jasper Report a partir de un XML

Pues si te fijas en el API, theJRXmlDataSource tiene un contructor donde le pasas el documento, que debe ser el que ahora usas tu, y otro donde le pasas el documento y la selectExpression, que es el que tienes que usar, pasandole "/listado/registros/registro" como expresion.

S
D.
  #9 (permalink)  
Antiguo 16/11/2007, 05:28
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Jasper Report a partir de un XML

Este es mi código

//Crea la conexión con el XML
JRXmlDataSource conn = new JRXmlDataSource("C:\\***\\***\\facturas.xml","/listado/registros/registro");

String reportFile = "C:\\eData\\recibo.jrxml";
HashMap params = new HashMap();
params.put("id_recibo",recid);

//Cargo la plantilla
JasperDesign objJasperDesign = JRXmlLoader.load(reportFile);

//Compilamos la plantilla
JasperReport objJasperReport = JasperCompileManager.compileReport(objJasperDesign );

// Poblamos la plantilla con los datos del XML y parametros
JasperPrint objJasperPrint=JasperFillManager.fillReport(objJas perReport, params, conn);

JasperExportManager.exportReportToPdfFile(objJaspe rPrint, "C:\\***\\pdfEjemplorecibos.pdf");
System.out.println("Exporta el reporte");

Gracias siempre
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:16.