Converter de XML para objeto com XStream?

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!!!

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:

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.

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:

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:

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