iReport com Base de Dados XML

Boa noite pessoal do GUJ, to desesperado e a dúvida é a seguinte:
Tenho um projeto que gera um xml e preciso usar esse xml no iRepot

Classe Venda

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package traboficialxml.model;

import com.thoughtworks.xstream.annotations.XStreamAlias;

/**
 *
 * @author
 */
@XStreamAlias("venda")
public class Venda {

    private int cod;
    private String descProduto;
    private String mes;
    private int qtdeVendida;

    //Getters and Setters
    public int getCod() {
        return cod;
    }

    public void setCod(int cod) {
        this.cod = cod;
    }

    public String getDescProduto() {
        return descProduto;
    }

    public void setDescProduto(String descProduto) {
        this.descProduto = descProduto;
    }

    public String getMes() {
        return mes;
    }

    public void setMes(String mes) {
        this.mes = mes;
    }

    public int getQtdeVendida() {
        return qtdeVendida;
    }

    public void setQtdeVendida(int qtdeVendida) {
        this.qtdeVendida = qtdeVendida;
    }
}

Classe Main

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package traboficialxml;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.Dom4JDriver;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import traboficialxml.controle.RelatorioBean;
import traboficialxml.model.Venda;

/**
 *
 * @author
 */
public class Main {

    public static void gravaVenda() {
        XStream xStream = new XStream();
        xStream.alias("venda", Venda.class);

        Venda venda = new Venda();
        venda.setCod(1);
        venda.setDescProduto("Arroz");
        venda.setMes("JANEIRO");
        venda.setQtdeVendida(20);

        System.out.println(xStream.toXML(venda));

        File arquivo = new File("venda.xml");
        FileOutputStream gravar;
        try {
            gravar = new FileOutputStream(arquivo);
            gravar.write(xStream.toXML(venda).getBytes());
            gravar.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void gerarListaVenda(){
        List<Venda> vendas = new ArrayList<Venda>();

        Venda v1 = new Venda();
        v1.setCod(1);
        v1.setDescProduto("ARROZ");
        v1.setMes("JANEIRO");
        v1.setQtdeVendida(20);
        vendas.add(v1);

        Venda v2 = new Venda();
        v2.setCod(2);
        v2.setDescProduto("FEIJÃO");
        v2.setMes("FEVEREIRO");
        v2.setQtdeVendida(15);
        vendas.add(v2);

        Venda v3 = new Venda();
        v3.setCod(3);
        v3.setDescProduto("CAFÉ");
        v3.setMes("MARÇO");
        v3.setQtdeVendida(25);
        vendas.add(v3);

        Venda v4 = new Venda();
        v4.setCod(4);
        v4.setDescProduto("AÇÚCAR");
        v4.setMes("ABRIL");
        v4.setQtdeVendida(12);
        vendas.add(v4);

        Venda v5 = new Venda();
        v5.setCod(5);
        v5.setDescProduto("MACARRÃO");
        v5.setMes("MAIO");
        v5.setQtdeVendida(34);
        vendas.add(v5);

        XStream xStream = new XStream();
        xStream.alias("vendas", List.class);
        xStream.alias("venda", Venda.class);

        System.out.println(xStream.toXML(vendas));

        File arquivo = new File("vendas.xml");
        FileOutputStream gerar;

        try {
            gerar = new FileOutputStream(arquivo);
            gerar.write(xStream.toXML(vendas).getBytes());
            gerar.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private static void lerXML(){
        try {
            XStream xStream = new XStream(new Dom4JDriver());
            xStream.alias("vendas", ArrayList.class);
            xStream.processAnnotations(Venda.class);
            BufferedReader input = new BufferedReader(new FileReader("vendas.xml"));
            input.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //gravaVenda();
        //gerarListaVenda();
        lerXML();
}

Como faço pra usar o xml no iReport e chamar ele no netBeans

Não sei se entendi teu problema direito, mas tu tá com a faca e o queijo na mão.
Se tu tens uma coleção de “Venda”, podes usar essa coleção como DataSource do teu relatório. Na realidade, um JRBeanCollectionDataSource. O processamento do XML será uma etapa antes disso.
Se não me fiz entender, só postar aqui que a gente vai ajudando.
Abraço!

[quote=leoramos]Não sei se entendi teu problema direito, mas tu tá com a faca e o queijo na mão.
Se tu tens uma coleção de “Venda”, podes usar essa coleção como DataSource do teu relatório. Na realidade, um JRBeanCollectionDataSource. O processamento do XML será uma etapa antes disso.
Se não me fiz entender, só postar aqui que a gente vai ajudando.
Abraço![/quote]

Então Leo, é isso mesmo que eu preciso, só não estou sabendo como proceder quando isso, o que eu fiz no iReport até agora foi importar o classePatch do jar do meu projeto e ler a classe para pegar os fields e loquei todos eles no relatório. Mas não sei como proceder quanto ao xml que o projeto gera, ele gera um venda e um vendas que é a lista.

No meu projeto além do código que citei no começo eu tbm criei:

RelatorioBean

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package traboficialxml.controle;

import java.util.Map;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author
 */
public class RelatorioBean {

    private void montarRelatorio(JRDataSource jrds, Map<Object, Object> parametros, String arquivo){
        try {
            JasperPrint print = JasperFillManager.fillReport(arquivo, parametros, jrds);
            JasperViewer.viewReport(print, false);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void gerarRelatorio(){
        String arquivo = "src/traboficialxml/controle/relatorio/rel_vendas.jasper";

        JRDataSource jrds = new JRBeanCollectionDataSource(null);

        montarRelatorio(jrds, null, arquivo);
    }
}

e o Main está assim:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package traboficialxml;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.Dom4JDriver;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import traboficialxml.controle.RelatorioBean;
import traboficialxml.model.Venda;

/**
 *
 * @author
 */
public class Main {

    public static void gravaVenda() {
        XStream xStream = new XStream();
        xStream.alias("venda", Venda.class);

        Venda venda = new Venda();
        venda.setCod(1);
        venda.setDescProduto("Arroz");
        venda.setMes("JANEIRO");
        venda.setQtdeVendida(20);

        System.out.println(xStream.toXML(venda));

        File arquivo = new File("venda.xml");
        FileOutputStream gravar;
        try {
            gravar = new FileOutputStream(arquivo);
            gravar.write(xStream.toXML(venda).getBytes());
            gravar.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void gerarListaVenda(){
        List<Venda> vendas = new ArrayList<Venda>();

        Venda v1 = new Venda();
        v1.setCod(1);
        v1.setDescProduto("ARROZ");
        v1.setMes("JANEIRO");
        v1.setQtdeVendida(20);
        vendas.add(v1);

        Venda v2 = new Venda();
        v2.setCod(2);
        v2.setDescProduto("FEIJÃO");
        v2.setMes("FEVEREIRO");
        v2.setQtdeVendida(15);
        vendas.add(v2);

        Venda v3 = new Venda();
        v3.setCod(3);
        v3.setDescProduto("CAFÉ");
        v3.setMes("MARÇO");
        v3.setQtdeVendida(25);
        vendas.add(v3);

        Venda v4 = new Venda();
        v4.setCod(4);
        v4.setDescProduto("AÇÚCAR");
        v4.setMes("ABRIL");
        v4.setQtdeVendida(12);
        vendas.add(v4);

        Venda v5 = new Venda();
        v5.setCod(5);
        v5.setDescProduto("MACARRÃO");
        v5.setMes("MAIO");
        v5.setQtdeVendida(34);
        vendas.add(v5);

        XStream xStream = new XStream();
        xStream.alias("vendas", List.class);
        xStream.alias("venda", Venda.class);

        System.out.println(xStream.toXML(vendas));

        File arquivo = new File("vendas.xml");
        FileOutputStream gerar;

        try {
            gerar = new FileOutputStream(arquivo);
            gerar.write(xStream.toXML(vendas).getBytes());
            gerar.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private static void lerXML(){
        try {
            XStream xStream = new XStream(new Dom4JDriver());
            xStream.alias("vendas", ArrayList.class);
            xStream.processAnnotations(Venda.class);
            BufferedReader input = new BufferedReader(new FileReader("vendas.xml"));
            input.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //gravaVenda();
        //gerarListaVenda();
        lerXML();

        JFrame frame = new JFrame("Relatório");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton botao = new JButton("Vendas");
        botao.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                RelatorioBean controle = new RelatorioBean();
                controle.gerarRelatorio();
            }
        });
        frame.getContentPane().add(botao);
        frame.pack();
        frame.setVisible(true);
    }
}

Daí pra frente não sei mais como proceder e o que alterar.