XML + XStream

3 respostas
grunfeldt

Boa tarde pessoal,
Já usei o forum, e achei todos os posts relacionados ao assunto.
E mesmo aqueles que deram respostas não conseguiram resolver o problema…
Na documentação do XStream não mostra nada disso tb.
Espero que alguem que estaja ai agora consiga me dar uma ajuda.
Eu consigo transformar os meus objetos em xml e do xml para meus objetos Java tranquilamente.
Mas não sei como fazer para abrir e ler esse arquivo ja existente e grava-lo.
Eu acredito que tenho que usar o proprio XStream, mas não sei mais como fazer,
Ou se existe um jeito de ler o arquivo xml sem o XStream e usar o parser dele.
O código abaixo gera o xml e exibe na saida padrao.

Meu código:

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

import com.thoughtworks.xstream.XStream;

public class ServletConfiguracoes {

	public static void main(String[] args) throws Exception{
	
		// Configurando XStream		
		XStream xstream = new XStream();
		
		//Meu objeto Java. Quero mudar o caminho que esta no xml com estes valores.
		Configuracoes conf = new Configuracoes();
		conf.setCaminhoBase("C:/Origem");
		conf.setCaminhoDestino("C:/Destino");
		
		// Passando os dados de Objetos Java para XML
		List configuracoes = new ArrayList(1);
		configuracoes.add(conf);
		
		String configuracaoEmXML = xstream.toXML(configuracoes);
		
		System.out.println("XML: " + configuracaoEmXML);
	}

}	
/*
 * Como esta o meu xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuracoes>
	<caminhoBase>
		C:\
	</caminhoBase>
	<caminhoDestino>
		C:\
	</caminhoDestino>
</Configuracoes>
*/

Bom é isso, se alguem ajudar, agradeço desde ja!

3 Respostas

_fs

Não entendi sua dúvida.

grunfeldt

Se eu pegar um objeto java meu e usar o XStream, ele vai transformar todo o objeto em uma
String, com o texto ja no formato do xml, bastando apenas salvar.
O que eu não sei como fazer, é abrir esse arquivo xml e salvar essa String com as novas informações.
Se eu usar a Classe File, acho q não vai gravar direito pq naum vai saber como é a estrutura do xml.
E tenho medo de estar reinventando a roda, caso o XStream realmente ja salve este arquivo corretamente.
Eu acho q quem deveria gravar a string é o proprio XStream.

claudsan

Pode utilizar sem medo ele carrega o xml e transforma no mesmo objeto que foi criado eu fiz esses 2 metodos para me auxiliar a utilizar o XStream

/**
     * Convert um Objeto Pojo em uma strimg XML
     * @param pojo
     * @return string xml
     */
    public static String convertObjectToXML(Object pojo) {
        XStream stream = new XStream(new Dom4JDriver());
        return stream.toXML(pojo);
    }

    /**
     * Dados de arquivos xml para Objeto
     * @param pathFileXml
     * @return
     */
    public static Object convertXMLToObject(String pathFileXml) {
        XStream stream = new XStream(new Dom4JDriver());
        FileInputStream inputStream = null;
        try {
            inputStream = new FileInputStream(pathFileXml);
            return stream.fromXML(inputStream);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(GuiUtils.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }
Criado 20 de junho de 2008
Ultima resposta 21 de jun. de 2008
Respostas 3
Participantes 3