![]() |
![]() ![]() XStream - Converta objetos Java para XML
![]() Por Caio Paes(caio.paes@ccc.ufcg.edu.br)
A Coluna Java de março fala um pouco sobre o XStream - uma biblioteca para a conversão de objetos para XML. O XStream é open source e, sem necessidade de configurações e com muita rapidez, pode-se escrever e ler objetos em texto XML muito limpo.
O XStream é uma biblioteca para a conversão de objetos Java para XML (Extensible Markup Language) e vice-versa. A sua interface é muito simples e fácil de ser usada. Com apenas uma chamada de método ao Xstream, o programador Java realiza a conversão de objetos em um texto XML. O texto gerado pode ser serializado utilizando as funções disponíveis na biblioteca padrão de Java ou qualquer outra forma definida pelo desenvolvedor. Com a mesma simplicidade, um código XML pode ser lido e objetos serão criados. Além da facilidade de uso, o XStream faz o seu trabalho sem a necessidade de mapeamentos, modificações nas classes ou arquivos de configuração. Outra característica muito forte dessa biblioteca é a sua capacidade de gerar XML facilmente lido por seres humanos. Por meio da aplicação de aliases (apelidos), as tags que compõem o XML podem ser personalizadas pelo desenvolvedor. A seguir, vamos criar um exemplo bem simples. Afinal de contas, o objetivo, quando se procura o XStream, é não complicar a vida do programador. Inicialmente, criaremos as classes para os dados utilizados na nossa aplicação. package petnews.colunajava.xstream.model; // Usuario.java import java.util.List; import java.util.ArrayList; public class Usuario { private String login; private List<Tweet> tweets; public Usuario() { this.tweets = new ArrayList<Tweet>(); } public String getLogin() { return this.login; } public void setLogin(String login) { this.login = login; } public List<Tweet> getTweets() { return this.tweets; } public void setTweets(List<Tweet> tweets) { this.tweets = tweets; } public void addTweet(Tweet tweet) { if (this.getTweets() != null) { this.tweets.add(tweet); } } } Observe, que não precisamos fazer nenhuma modificação no código do usuário para que possamos realizar a conversão de um objeto dessa classe para texto XML. Outra observação importante está no fato de podermos converter coleções de dados (“List<Tweet>”). O XStream converte listas, mapas e arrays. Veja, a seguir, o código da classe Tweet. package petnews.colunajava.xstream.model; // Tweet.java import java.sql.Timestamp; public class Tweet { private String mensagem; private Timestamp timestamp; public Tweet() { this.setTimestamp(new Timestamp(System.currentTimeMillis())); } public String getMensagem() { return this.mensagem; } public void setMensagem(String mensagem) { this.mensagem = mensagem; } public Timestamp getTimestamp() { return this.timestamp; } public void setTimestamp(Timestamp timestamp) { this.timestamp = timestamp; } } Agora, vamos criar um pequeno exemplo que utiliza o XStream para converter objetos instanciados em um texto XML. package petnews.colunajava.xstream; import petnews.colunajava.xstream.model.Usuario; import petnews.colunajava.xstream.model.Tweet; import com.thoughtworks.xstream.XStream; public class XStreamTeste { public static void main(String[] args) { XStream xstream = new XStream(); xstream.alias("usuario", Usuario.class); xstream.alias("tweet", Tweet.class); Usuario usuario = new Usuario(); usuario.setLogin("petccufcg"); Tweet tweet = new Tweet(); tweet.setMensagem("#PETNews XStream - Converta objetos Java para XML - Por @CaioCMPaes"); usuario.addTweet(tweet); String xml = xstream.toXML(usuario); System.out.println(xml); Usuario usuarioCopia = (Usuario) xstream.fromXML(xml); System.out.println("Nome: " + usuarioCopia.getLogin()); System.out.println("Tweet: " + usuarioCopia.getTweets().get(0).getMensagem()); } } Os aliases criados indicam para o XStream que, em substituição ao uso do nome completo da classe (indicando todos os pacotes), ele use apenas “usuario” e “tweet”. Lembrando o início da matéria, apenas um método é utilizado para fazer toda a conversão da hierarquia de dados do objeto Usuario no XML a seguir. Observe, também, a leitura do conteúdo XML, resultando num objeto com os mesmos dados que existam antes da conversão. <usuario> <login>petccufcg</login> <tweets> <tweet> <mensagem>#PETNews XStream - Converta objetos Java para XML - Por @CaioCMPaes</mensagem> <timestamp>2012-03-13 00:49:38.574</timestamp> </tweet> </tweets> </usuario> Nome: petccufcg Tweet: #PETNews XStream - Converta objetos Java para XML - Por @CaioCMPaes O XStream é open source e seu desenvolvimento é corrente. A release mais recente foi lançada no dia 03 de novembro de 2011. Além da biblioteca ser bem documentada e possuir vários tutoriais na Internet, seu uso é muito comum para a serialização de objetos. É muito útil para salvar os dados de projetos de pequeno e médio porte (quanto à quantidade de dados). Isso tudo, vale lembrar, sem a necessidade de configurações, mudanças no código, ou criação de esquemas relacionais, etc. O código-fonte do exemplo pode ser encontrado aqui. Jornal PETNews - Edição: Jeymisson Oliveira - Revisão: Savyo Igor e Joseana Fechine
Grupo PET Computação UFCG, 2012. All rights reserved. |
![]() |