Gerar arquivo XML com Xstream

2 respostas
danieldomingues86

Ola pessoal,

Estou usando XStream para trabalhar com XML e estou achando otimo, gerei o arquivo XML facilmente porem nao estou conseguindo fazer com que os nodes do XML sejam criados da forma correta , porque o arquivo XML eh criado e todos os meus objetos juntamente com todos seus atributos sao colocados dentro de um so node.

Meu metodo recebe uma lista e esta lista tem varios objetos, gostaria que a medida que eu fosse lendo a lista o xml fosse sendo gerado corretamente com cada objeto especifico em seu node e os atributos dentro.

Segue o codigo :

public class GerenciadorXML {

    public StringBuilder geraXMLContato(List list) {

        XStream xStream = new XStream();
        xStream.alias("contato", Contato.class);

        StringBuilder saida = new StringBuilder();

        try {
            File f = new File("/home/daniel/Desktop/ListaContatos.xml");
            FileWriter fr = new FileWriter(f);

            ObjectOutputStream oos = xStream.createObjectOutputStream(fr, "contato");

            for (int i = 0; i < list.size(); i++) {

                saida.append(xStream.toXML(list.get(i)));
            }

            oos.writeObject(saida);

            oos.close();

        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return saida;
    }
}

Qual modificacao tenho que fazer para gerar o XML corretamente no codigo acima?

se eu colocar o oos.writeObject(saida); detro do for o pc ate trava rsrs.

Agradeco quem puder ajudar.
Obrigado.

2 Respostas

danieldomingues86

Ola pessoal,

consegui fazer umas alteracoes no codigo, e o xml ja ta praticamente certo , gerando cada objeto em um node e seus atributos dentro corretamente so que pra cada node de cada objeto eh gerado um porque ele gera isso?

Vou postar o codigo alterado.

public StringBuilder geraXMLContato(List list) {

        XStream xStream = new XStream();
        xStream.alias("contato", Contato.class);

        StringBuilder saida = new StringBuilder();

        try {

            FileOutputStream fos = new FileOutputStream("/home/daniel/Desktop/ListaContatos.xml");
            ObjectOutputStream oos = xStream.createObjectOutputStream(fos);

            for (int i = 0; i < list.size(); i++) {
                
                oos.writeObject(list.get(i));
                xStream.toXML(list.get(i), oos);
            }

            oos.close();

        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return saida;
    }
danieldomingues86

Ola pessoal,

Ja resolvi o erro, de qualquer forma vlw ae :slight_smile:

Nao precisava usar o metodo toXML por eu ter criado o objeto de saida pelo proprio xStream ele ja me gera o xml quando eu faco writeObjet();

Um abraco.

Criado 16 de agosto de 2009
Ultima resposta 16 de ago. de 2009
Respostas 2
Participantes 1