Pourquoi JAXB est-il parfois associé à JAXBElement?
Il y a un espace réservé à répondre à plus de à le guide non officiel avec un lien vers un article qui (me) semble tout à fait sans rapport.
- Je utiliser XJC pour générer mon JAXB classes et alors que la plupart d'entre eux mapper les uns aux autres comme prévu, certains éléments sont mappés à JAXBElement<Foo>
. C'est plus ennuyeux pour les graphes avec des cycles, où, parfois, le nœud parent d'un élément Foo sera le JAXBElement<Foo>
ce qui n'est pas elle-même une propriété parent, de briser le cycle.
Je ne peux penser à des solutions différentes, mais il serait beaucoup mieux si quelqu'un pourrait expliquer ce comportement pour moi. Pourquoi ne JAXB parfois la carte d'un <Foo>
élément de JAXBElement<Foo>
au lieu de Foo?
source d'informationauteur TL Stillman
Vous devez vous connecter pour publier un commentaire.
JAXBElement est utilisé pour conserver le nom de l'élément/l'espace de noms dans les cas d'utilisation où suffisamment d'information n'est pas présente dans le modèle objet. La plus courante occurence est avec des groupes de substitution:
Avec Un Groupe De Substitution:
Va générer:
Sans Groupe De Substitution:
Si vous supprimez le groupe de substitution:
La classe suivante est générée:
Vous pouvez également obtenir une JAXBElement lorsque vous unmarshal, comparez les exemples suivants:
Pour éviter la cartographie de JAXBElement?
J'ai fait les choses fonctionner pour moi :
Enregistrer ce fichier dans le fichier xml et d'approvisionnement, et la liaison de fichiers.
Référence Lien
Générer JAXB classes à l'aide d'eclipse n'oubliez pas de donner la liaison des fichiers créés avec xml ci-dessus et cochez la case "Autoriser les extensions Fournisseur" comme ci-dessous:
Avec les modifications que je suis en mesure de se débarrasser de JAXBElement dans les classes générées xjc pour convertir xsd pour JAXB classes générées.