XStream + XML

2 respostas
C

Olá pessoal!

Consegui gerar um XML, porém tenho uma classe persistente Cliente, que tem seus dados incluídos. Só consigo gerar um cliente, e como todo relatório deveria apresentar mais de um dado. Ja tente em diversas maneiras mas não adiantou, segue abaixo o modelo com somente um nó…

ClienteTO

/*
 * FornecedorTO.java
 *
 * Created on 4 de Agosto de 2006, 14:44
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

import com.thoughtworks.xstream.XStream;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Comment;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.Node;
import org.w3c.dom.ProcessingInstruction;
import org.w3c.dom.Text;

import java.util.*;

/**
 *
 * @author ccarvalho
 */
public class ClienteTO{
    private String id;
    private String nome;
    private String pessoa;
    private String cnpjCpf;
    private String ieRg;
    private String endereco;
    private String bairro;
    private String cep;
    private String cidade;
    private String uf;
    private String pais;
    private String telefone;
    private String celular;
    private String email;
    
    public ClienteTO(){    
    }
    
    public ClienteTO(String nome, String pessoa, String cnpjCpf,
            String ieRg, String endereco, String bairro, String cep,
            String cidade, String uf, String pais, String telefone,
            String celular, String email){
            
        this.nome = nome;
        this.pessoa = pessoa;
        this.cnpjCpf = cnpjCpf;
        this.ieRg = ieRg;
        this.endereco = endereco;
        this.bairro = bairro;
        this.cep = cep;
        this.cidade = cidade;
        this.uf = uf;
        this.pais = pais;
        this.telefone = telefone;
        this.celular = celular;
        this.email = email;
    }
    
    public ClienteTO(String id){
        this.id = id;
    }
    
    public String getId() {
        return id;
    }
    
    public void setId(String id) {
        this.id = id;
    }
    
    public String getNome() {
        return nome;
    }
    
    public void setNome(String nome) {
        this.nome = nome;
    }
    
    public String getPessoa() {
        return pessoa;
    }
    
    public void setPessoa(String pessoa) {
        this.pessoa = pessoa;
    }
    
    public String getCnpjCpf() {
        return cnpjCpf;
    }
    
    public void setCnpjCpf(String cnpjCpf) {
        this.cnpjCpf = cnpjCpf;
    }
    
    public String getIeRg() {
        return ieRg;
    }
    
    public void setIeRg(String ieRg) {
        this.ieRg = ieRg;
    }
    
    public String getEndereco() {
        return endereco;
    }
    
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
    
    public String getBairro() {
        return bairro;
    }
    
    public void setBairro(String bairro) {
        this.bairro = bairro;
    }
    
    public String getCep() {
        return cep;
    }
    
    public void setCep(String cep) {
        this.cep = cep;
    }
    
    public String getCidade() {
        return cidade;
    }
    
    public void setCidade(String cidade) {
        this.cidade = cidade;
    }
    
    public String getUf() {
        return uf;
    }
    
    public void setUf(String uf) {
        this.uf = uf;
    }
    
    public String getPais() {
        return pais;
    }
    
    public void setPais(String pais) {
        this.pais = pais;
    }
    
    public String getTelefone() {
        return telefone;
    }
    
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
    
    public String getCelular() {
        return celular;
    }
    
    public void setCelular(String celular) {
        this.celular = celular;
    }
    
    public String getEmail() {
        return email;
    }
    
    public void setEmail(String email) {
        this.email = email;
    }
    
    public void createXml() {
        Funcionario func = new Funcionario();
        
        
        func.add(new ClienteTO( getNome(), getPessoa(), getCnpjCpf(),
                getIeRg(), getEndereco(), getBairro(), getCep(), getCidade(),
                getUf(), getPais(), getTelefone(), getCelular(), getEmail() )); 
        
       
       
        
        XStream xstream = new XStream();
        xstream.alias("funcionario", Funcionario.class);
        xstream.alias("cliente", ClienteTO.class);

        xstream.addImplicitCollection(Funcionario.class, "clientes");
        
        String xml = xstream.toXML(func);
       
       try {
           PrintWriter saida = new PrintWriter(new FileOutputStream("C:\arquivo.xml"));
           saida.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
               "<?xml-stylesheet type=\"text/xsl\" " +
               "href=\"http://localhost:8080/aula2/arquivo.xsl\"?>\n");
           saida.println(xml);
           saida.flush();
           saida.close();
       } catch (FileNotFoundException e) {
           e.printStackTrace();
       }
     }
}

ClienteAction

import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ClienteAction extends HttpServlet 
{
	public void doPost(HttpServletRequest req, HttpServletResponse res)
					throws ServletException, IOException 
	{
		res.setContentType("text/html");
		PrintWriter out = res.getWriter();
		
		// Captura o botão pressionado
		String operacao = req.getParameter("operacao");
		
		//Operação de Consultar Todos
		if (operacao.equals("Gerar XML")){
			try{
                        // Cria um objeto da classe de negócio Aluno.
                        ClienteTO cliente = new ClienteTO();
                        // executa a consulta.
                        
                        String id = req.getParameter("id");
                        String nome = req.getParameter("nome");
                        String pessoa = req.getParameter("pessoa");
                        String cnpjCpf = req.getParameter("cnpjCpf");
                        String ieRg = req.getParameter("ieRg");
                        String endereco = req.getParameter("endereco");
                        String bairro = req.getParameter("bairro");
                        String cep = req.getParameter("cep");
			String cidade = req.getParameter("cidade");
                        String uf = req.getParameter("uf");
                        String pais = req.getParameter("pais");
                        String telefone = req.getParameter("telefone");
                        String celular = req.getParameter("celular");
                        String email = req.getParameter("email");
                        
                        
                        cliente.setId(id);
                        cliente.setNome(nome);
                        cliente.setPessoa(pessoa);
                        cliente.setCnpjCpf(cnpjCpf);
                        cliente.setIeRg(ieRg);
                        cliente.setEndereco(endereco);
                        cliente.setBairro(bairro);
                        cliente.setCep(cep);
			cliente.setCidade(cidade);
                        cliente.setUf(uf);
                        cliente.setPais(pais);
                        cliente.setTelefone(telefone);
                        cliente.setCelular(celular);
                        cliente.setEmail(email);
                        
                        cliente.createXml();   
                        
                        RequestDispatcher dispatcher = 
                                getServletContext().getRequestDispatcher("/mostrarXml.jsp");
                        dispatcher.forward(req, res);  
			}catch(Exception e) {
				out.println("Erro: " + e.getMessage());
			}
 		}
	}
}

Funcionario

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author ccarvalho
 */
public class Funcionario {
    private ClienteTO cliente;
    private List clientes = new ArrayList();
    
    public Funcionario() {
    }    
   
    
    public void add(ClienteTO cliente) {
        clientes.add(cliente);
    }
        
}

Como gerar mais de um…???

2 Respostas

S

Oi Christielen,

Pelo seu codigo parece que ele está gerando apenas 1 por vez, devido a sua chamada, exemplo:

cliente.setId(id);
cliente.setNome(nome);
cliente.setPessoa(pessoa);
cliente.setCnpjCpf(cnpjCpf);
cliente.setIeRg(ieRg);
cliente.setEndereco(endereco);
cliente.setBairro(bairro);
cliente.setCep(cep);
cliente.setCidade(cidade);
cliente.setUf(uf);
cliente.setPais(pais);
cliente.setTelefone(telefone);
cliente.setCelular(celular);
cliente.setEmail(email);

cliente.createXml();

E cada vez que esse codigo é executado ele grava a saída:

PrintWriter saida = new PrintWriter(new FileOutputStream("C:\arquivo.xml"));

Então só o ultimo que vc executar vai aparecer no arquivo.xml

O que vc pode fazer … é criar uma classe separada só para gerar o XML… e essa classe receber uma Lista de ClienteTO.

C

Valeu! Problema resolvido!

Criado 17 de outubro de 2006
Ultima resposta 18 de out. de 2006
Respostas 2
Participantes 2