Gravar xml via http usando XStream

Fala galera blz,

Estou tentando gravar um xml via http utilizando o XStream, porem, não estou conseguindo, ele não da erro, mas, não altera o arquivo :cry: .
Para ler funciona normalmente.

Alguém já trabalho com o XStream?
Podem me ajudar?

public class TesteXStream {
    public static void main(String[] args) throws IOException, URISyntaxException {
        // Criando um objeto XStream       
        XStream xstream = new XStream(new DomDriver());

        // Criando alguns dados
        Pessoa pessoa = new Pessoa();
        pessoa.setNome("Leonardo Da Vinci");
        pessoa.setEmail("vinci_amorim@yahoo.com.br ");
       
        Fone fone = new Fone();
        fone.setDDD("44");
        fone.setNumero("1234-5678");
       
        List fones = new ArrayList();
        fones.add(fone);
       
        pessoa.setFones(fones);

        List contatos = new ArrayList(1);
        contatos.add(pessoa);

        // Passando os dados de Objetos Java para XML
        URL url = new URL("http", "localhost", "/arquivos/noticias.xml");
        URLConnection connection = url.openConnection();
        connection.setDoOutput(true);
        OutputStream outputStream = connection.getOutputStream();
       
        xstream.toXML(contatos, outputStream);

        // Passando os dados de XML para Objetos Java
        connection = url.openConnection();
        connection.setDoInput(true);

        InputStream inputStream = connection.getInputStream();
        List amigos = (List) xstream.fromXML(inputStream);
        Noticia amigo = (Pessoa) amigos.get(0);

        System.out.println("Amigo como Objeto Java:");
        System.out.println("Nome: " + amigo.getNome());
        System.out.println("Fone: " + ((Foto)amigo.getFones().get(0)).getNumero());
    }
}

ô o aue ai ô!! :smiley:

Cara, usa o toXML que retorna uma String e dai pega essa String e soca pelo stream http… já era!

Valew pela dica le-silva, mas, eu ja tentei isso e não deu certo

OutputStream outputStream = connection.getOutputStream();
		
		String xml = xstream.toXML(contatos);
		
//		xstream.toXML(contatos, outputStream);
		outputStream.write(xml.getBytes());
		outputStream.flush();
		outputStream.close();

Falow

Blz, cara…
Vamos lá…
Deixa me ver se consigo te ajudar…

Qual é o objetivo desse seu programa?

Cara eu tenho um sistema que busca algumas informações externas (de um banco) e mostra para o usuário,
porem da onde eu busco é muito lento e o usuário tem que ficar esperando:
a minha idéia é buscar essa informações e gravar em um xml, para buscá-los dele e não de fora.
fragou?

Por que ao invez de usar URLConnection você não usa FileReader e FileWriter para ler e escrever no arquivo XML, e depois apenas lê este aquilo para retornar ao usuário “browser”?

Você usa o XStream obter uma String com o objeto serializado e escreve ele com um FileWriter; depois, lê o XML com um FileReader, faz o unmarshal com o XStream e dá ao seu usuário final.

Eu uso XStream aqui no meu trabalho, mas para fazer marshal e unmarshal de objetos para intercâmbio com stored procedures. Não preciso persisti-los.

Para persistencia tem uma outra API também tastante interessante, que é o Simple (http://simple.sourceforge.net).

Fala Leandro,

Ja tentei com o File…, mas, também não deu certo, acho que não mencionei que é um sistema web. Penso que o problema esta ai. Porque para ler funcina normalmente.

Vou dar uma olhada no Simple.

Valew por enquanto.