XStream - Salvando arquivos XML com Java 
Autor: Vantuil Oliveira | Publicado: 2011-07-20T11:06:00-07:00

XStream é uma biblioteca simples para serializar objetos em arquivos XML, e desserializá-los em objetos Java. Ou seja, com essa biblioteca você é capaz de salvar seus objetos em arquivos XML e restaurar esse arquivos em objetos novamente.
Entre as principais vantagens de usar essa biblioteca estão:É fácil de usar – Existe uma classe de alto nível que encapsula a biblioteca, com apenas uma classe você consegui salvar seus objetos em arquivos XML.
Desempenho – É rápido e consome pouca memória, por isso pode ser usado para objetos com muitos dados, ou em sistema que necessitem salvar muitos XML’s.
Não é necessário modificar classes e objetos -&nbsp; Serializa campos internos, incluindo os private e final. Suporta classes internas e não públicas, e não exige que as classe possuam um construtor padrão.

Para aplicações pequenas, em que não seja necessário XML complexo, o XStream se mostra como uma excelente opção. Sua facilidade de uso torna tudo mais simples, e o desenvolvedor precisa de poucas linhas para salvar e recuperar seus objetos.
Primeiramente é necessário fazer o download do arquivo .jar da biblioteca, o endereço é http://xstream.codehaus.org/download.html. Se o código for usado como mostrado nessa postagem não é necessário incluir nenhuma outra biblioteca ao seu projeto.O Exemplo a seguir foi adaptado do site da biblioteca. Primeiramente são criadas duas classes simples:public class Pessoa {&nbsp; private String nome;&nbsp; private String sobreNome;&nbsp; private Fone fone;&nbsp; private Fone celular;}
public class Fone {&nbsp; private int codigo;&nbsp; private String numero;}
Após ter as classes que deseja serializar, e adicionar a biblioteca ao seu ClassPath, inicie um objeto XStream. Ele será responsável pela serialização e desserialização dos objetos.XStream xstream = new XStream(new DomDriver());//O código abaixo é opcionalxstream.alias("pessoa", Pessoa.class);xstream.alias("telefone", Fone.class);
Agora vamos mostrar os códigos para serializar um objeto da classe Pessoa. Basta usar o objeto xstream criado:Pessoa joao = new Pessoa(“João”, “da Silva”);joao.setFone(new Fone(1,”1234-456”));joao.setCelular(new Fone(2,”9999-9999”));String xml = xstream.toXML();

Com essa “manobra” a variável xml recebe o seguinte valor:  
&lt;pessoa&gt;
  &lt;nome&gt;João&lt;/nome&gt;
  &lt;sobrenome&gt;da Silva&lt;/sobrenome&gt;
  &lt;fone&gt;
    &lt;codigo&gt;1&lt;/codigo&gt;
    &lt;numero&gt;1234-456&lt;/numero &gt;
  &lt;/fone&gt;
  &lt;celular&gt;
    &lt;codigo&gt;2&lt;/codigo&gt;
    &lt;numero&gt;9999-999&lt;/numero &gt;
  &lt;/celular&gt;
&lt;/pessoa&gt;

Para desserializar é tão fácil quanto serializar:Pessoa novoJoao = (Pessoa)xstream.fromXML(xml);
É muito fácil né?!

E tem muitas utilidades! Quando desenvolvi o ecf, utilizei para restaurar itens vendidos quando o programa fechava ou havia queda de energia, ele salvava, a cada item vendido o arquivo xml da classe Cupom, e se ocorrece alguma eventualidade, ele transforma esse xml em objeto, e pronto, a aplicação ficava no mesmo&nbsp;
estado em que estava quando aconteceu o problema.

Abaixo seguem alguns códigos que podem ajudar ://Para omitir algum campo do xml//Não salvaremos o campo celular da classe Pessoaxstream.omitField(Pessoa.class, “celular”);&nbsp;---------------------------------------------------//Para salvar em uma arquivo – podemos salvar em uma OutPutStreamxstream.toXML(joao,&nbsp;new FileOutPutStream(“arquivo.xml”));&nbsp;&nbsp;---------------------------------------------------//Para recuperar de um arquivo- usando InputStreamPessoa novoJoao;novojoao = (Pessoa) xstream.fromXML(new FileInputStream(“arquivo.xml”));&nbsp;---------------------------------------------------//Para aceitar caracteres especiaisXStream&nbsp;stream&nbsp;=&nbsp;newXStream(new DomDriver("ISO-8859-1"));