Converter de XML para objeto com XStream?

7 respostas
A

Ola pessoal,
estou com uma dúvida, em relação ao XStream.
Tanto no tutorial daki do GUJ (Veja aqui…), quanto no tutorial da CodeHaus (Veja aqui…),
é mostrada a conversão de um objeto para XML:

Pessoa eu = new Pessoa("Alexandre");
eu.setTelefone("2234-5678");
eu.setFax("9999-9999");

String xml = xstream.toXML(eu);

E desse xml, converte para objeto:

Pessoa euNovo = (Pessoa) xstream.fromXML(xml);

Gostaria de saber como converter de um ARQUIVO xml, na raiz do meu
projeto, para um objeto, com XStream…alguém me ajuda por favor?

Desculpe minha ignorância… :smiley:

Valew!!!

7 Respostas

B

Opa! Estou trabalhando com o XStream aqui! Código saindo do forno! :smiley:

:arrow: Salvando:

FileWriter arquivo = new FileWriter(new File("arquivo.xml")); xstream.toXML(array,arquivo);//armazenando uma lista

:arrow: Lendo:

FileReader arquivo = new FileReader(new File("arquivo.xml")); ArrayList membros = (ArrayList)xstream.fromXML(arquivo);//retornando uma lista de objetos membros

Outra maneira é escrevendo a String no arquivo(salvando) e ler todas as linhas do arquivo em uma só String e convertendo(lendo).

Espero ter ajudado! :wink:

_

Bom, posso estar falando algo que não tem a ver com a sua dúvida, mas, com XStream, não dá transformar em objeto um XML que não foi gerado por ele.

Tentei fazer isso :expressionless:

A

Vixi Maria!!!
Vamos lá…
Estou utilizando o NanoContainer, e estou fazendo o assemble do container via XML,
num arquivo components.xml:

<container>
    <component class='org.nanocontainer.testmodel.DefaultWebServerConfig'/>
    <component class='org.nanocontainer.testmodel.WebServerImpl'/>
</container>

Agora quero utilizar esse componente que configurei no container, tava meio
perdido e o CV me falou pra usar XStream, agora preciso converter o meu
xml para objeto par utilizá-lo.

Da pra fazer isso?
[]'s

_

Se não foi o XStream que gerou esse xml, não. Só fazendo mágica com Java :expressionless:

Aliás, foi o próprio cv que me ajudou quando eu tava com dúvidas como XStream.

C

Ateh dah, mas o XML tem que ser muito bonzinho… por exemplo, nao usar atributos, nem trechos CDATA muito bizarros, nem… :frowning:

Bom, nao foi feito pra isso tb :wink:

A

O que eu entendi foi o seguinte:

:arrow: Você cria seus componentes

- Componente1;

- Componente2;

:arrow: Você monta o container com os componentes que você construiu.
No meu caso montei via XML, no arquivo ‘components.xml’:

<container>
    <component class='meuPacote.Componente1'/>
    <component class='meuPacote.Componente2'/>
</container>

:arrow: Você converte esse XML em objeto do tipo DefaultPicoContainer
e usa (reforçando que isso que eu entendi, caso esteja errado por favor
me carrijam…):

XStream xstream = new XStream(new DomDriver());
		try {
			DefaultPicoContainer container = (DefaultPicoContainer) xstream.fromXML(new FileReader(new File("components.xml")));
			Componente1 comp = (Componente1) container.getComponentInstanceOfType(Componente1.class);
			comp.start();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

Estou errado???
Preciso muito de resolver esse problemão…tenho q provar pro meu
patrão que usar IoC é bom…hahahahahahahahaha

Obrigado!
:shock: :shock: :shock: :shock: :shock: :shock:

V

Oi,

Bom estou chegando assim meio totalmente atrasado, mas vamos ver se posso ajudar.

O XStream é muito bom, mas talvez não sirva exatamente para seu caso. Como eu disse, vai trabalhar com XML? A sugestão é: tente usar XStream. Se não for possível, tente outra. :wink:

Mas se você está só querendo provar para o seu chefe que IoC é bom, esse artigo não resolve? Ou então esse

Criado 18 de agosto de 2004
Ultima resposta 28 de set. de 2004
Respostas 7
Participantes 5