J'ai besoin de mapper un XML, contraint par un objet XSD vers Java en utilisant XStream. Le XSD a 4 éléments de type complexe, qui sont des éléments de "choix", c'est-à-dire que l'un de ces 4 peut être présent dans le XML sous une étiquette racine.Xstream pour mapper les éléments "choice" de XML
J'ai regardé XStream mais il me semble que, pour cartographier un tel XML, j'aurais besoin de 8 classes. Comment? le voici ...
Dites par exemple que mon élément racine est VEHICLE et que chacun des types complexes dans le XML est a) CAR b) BIKE c) TRUCK d) TRACTEUR. Chacun d'eux a des propriétés différentes en leur sein. Pour mapper ceci à Xstream et rendre le XSD XML (généré par XStream), nous aurions besoin de 8 classes à savoir. VehicleCarWrapper -> (a) a voiture, VehicleTruckWrapper -> (a) a Camion, VehicleBikeWrapper -> (a) a Bike et VehicleTractorWrapper -> (a) a Tracteur.
Quelqu'un at-il une suggestion en dehors de la solution minable? Existe-t-il un moyen dans Xstream de mapper un tel élément "choice" d de la racine XML? Ainsi, tous les 4 (camion, voiture, vélo, tracteur) peuvent entrer dans le wrapper en tant qu'entités associées, mais XStream ignore toutes les associations sauf une à tout moment et crée donc un XML compatible XSD.
J'espère que ma question est claire.
Merci beaucoup!
Pour un exemple détaillé de mappage des structures de choix avec JAXB, voir: http://bdoughan.blogspot.com/2010/10/jaxb-and-xsd-choice-xmlelements.html –