Java: Enregistre une XML Collection
-
24-09-2019 - |
Question
Chaque fois que je l'ai cherché quelque chose sur la façon de sérialisation XML, je trouve les serializers de haricots. Il semble que tout doit être déclarée comme une propriété, ce qui va à l'encontre de mon but. Je veux sérialisation des hiérarchies complexes (jusqu'à ce qu'ils obtiennent à des primitives, bien sûr) en XML, commencez par (par exemple) un dictionnaire ou liste comme l'objet parent.
Quelles sont les options pour la sérialisation XML automatique?
J'ai trouvé quelques références à JAXB à partir de 2004, est-ce toujours le chemin à parcourir?
La solution
Essayez la bibliothèque XStream . Il facilement sérialiser toute hiérarchie d'objets complexe, vous pouvez jeter.
Autres conseils
J'ai eu beaucoup de succès avec JAXB, en particulier lors de l'utilisation du soutien dans NetBeans. Je sais pertinemment qu'il prend en charge les listes. Je ne l'ai pas essayé avec des cartes, mais je soupçonne que cela fonctionne. Si rien d'autre, juste faire un simple grain qui contient la liste et que ce soit là la fève sérialisé.
Vous pouvez utiliser le norme java.bean.XMLEncoder
/ les cours de Decoder
pour sérialiser collections parce que le mécanisme permet de l'appel de méthodes via XML. Les regards de sortie quelque chose comme:
<object class="java.util.ArrayList">
<void method="add">
<string>Hello</string>
</void>
<void method="add">
<string>World</string>
</void>
</object>
Bien sûr, cela a des faiblesses; par exemple, vous ne pouvez pas sérialiser facilement un Collections.emptyXXXX()
mais il y a des solutions de contournement. Mais parce que tout fonctionne selon le API publiquement soutenu des classes, la forme XML persistante résiste aux changements de schéma.
Je l'ai trouvé un mécanisme persistant très utile pour les objets Java.