Gravar xml via http usando XStream

6 respostas
contrabando

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("[email removido] ");
       
        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:

6 Respostas

le-silva

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

contrabando

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

le-silva

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

Qual é o objetivo desse seu programa?

contrabando

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?

le-silva

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).

contrabando

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.

Criado 17 de dezembro de 2007
Ultima resposta 18 de dez. de 2007
Respostas 6
Participantes 2