Java: serialize uma coleção xml
-
24-09-2019 - |
Pergunta
Toda vez que procurei algo sobre como seriar ao XML, encontrei os serializadores de feijão. Parece que tudo deve ser declarado como uma propriedade, o que derrota meu propósito. Eu quero serializar hierarquias complexas (até que elas cheguem a primitivas, é claro) no XML, comece com (digamos) um dicionário ou lista como objeto pai.
Que opções existem para a serialização automática XML?
Encontrei algumas referências a Jaxb de 2004, ainda é o caminho a seguir?
Solução
Tente o Xstream biblioteca. Ele serializará facilmente qualquer hierarquia complexa de objetos que você possa jogar nele.
Outras dicas
Tive muito sucesso com o JAXB, especialmente ao usar o suporte para ele no NetBeans. Eu sei de fato que suporta listas. Não tentei com mapas, mas suspeito que funcione. Se nada mais, basta fazer um feijão simples que contém a lista e deixe que seja o feijão serializado.
Você pode usar o padrão java.bean.XMLEncoder
/ Decoder
Classes para serializar coleções porque o mecanismo permite a chamada de métodos via XML. A saída parece algo Curti:
<object class="java.util.ArrayList">
<void method="add">
<string>Hello</string>
</void>
<void method="add">
<string>World</string>
</void>
</object>
Claro que isso tem fraquezas; por exemplo, você não pode facilmente serializar um Collections.emptyXXXX()
Mas existem soluções alternativas. Mas porque tudo funciona de acordo com o API de apoio publicamente Das classes, a forma XML persistente é resiliente às mudanças de esquema.
Achei um mecanismo persistente muito útil para os objetos Java.