Quem nunca passou por isso: ter que gerar e/ou ler arquivos xml e teve que escolher dentre diversas tecnologias e frameworks diferentes. Seja carregar tudo pra memoria ou ler aos poucos, se é um parser push ou pull, etc, é possivel dizer que para cada situação existe uma boa escolha.
Se o seu caso é trabalhar com arquivos cujos elementos podem ser mapeados em objetos java, uma boa escolha é o XStream
XStream xstream = new XStream(new DomDriver()); Person pac = new Person("Tiago", "Pac Man"); String xml = xstream.toXML(pac); /* Simples. É, para fazer o contrario, basta */ Person newPac = (Person)xstream.fromXML(xml);
Este e outros exemplos podem ser conferidos aqui:
http://xstream.codehaus.org/tutorial.html
É claro que o xml gerado assim, cru, nem sempre serve. Para isso vamos usar algumas linhas a mais para trabalhar com os recursos de alias, annotations e os Converters.
xtream.alias("pessoa",Person.class);
Dessa forma, para se livrar do nome.do.pacode.Person e trabalhar com algo mais expressivo como pessoa, basta adicionar este alias antes de converter de/para xml. Para trabalhar com aliasing de atributos (e coleções implicitas) o ponto de partida é este:
http://xstream.codehaus.org/alias-tutorial.html
É possivel trabalhar com annotations no seu modelo de classes, evitando toda essa configuração manual
http://xstream.codehaus.org/annotations-tutorial.html
Para trabalhar com o maximo de flexibilidade do XStream, entretanto, vc precisa trabalhar com Converters – Veja o exemplo da classe Birthday
http://xstream.codehaus.org/converter-tutorial.html
XStream trabalha muito bem com classes imutaveis, pois não recria os objetos usando o construtor e sim de maneira semelhante ao mecanismo de serialização de objetos, fazendo um bypass do construtor. Sem falar que traz um pensamento menos voltado a “tags” e mais OO.