Question

Je génère des classes Java à partir de mon fichier de schéma XSD à l'aide de l'outil de ligne de commande XJC. La classe ObjectFactory génère un contenu incomplet. Il génère des méthodes de création sans JAXBElement<Type> createType décoration.

Quelle peut être la raison de cela? Cordialement Dominik

Était-ce utile?

La solution

Seuls certains types d'une liaison générée par JAXB2 XJC ont besoin de JAXBElement wrappers. Les types qui ont l'annotation @XMLRootElement n'ont pas besoin du wrapper, et donc la fabrique d'objets n'en génère pas.

Autres conseils

JAXB génère des méthodes d'usine qui créent un JAXBElement à partir d'une instance d'objet uniquement si votre XSD contient à la fois une définition complexType et une définition d'élément distinct utilisant ce complexType AVEC LE NOM MEME, par exemple:

<complexType name="my-type">
   ...
</complexType>

<element name="my-type" type="tns:my-type"/>

Dans ce cas, JAXB n'annoncera pas la classe générée avec une annotation @XmlRootElement, mais fournira les méthodes de fabrique dont vous avez besoin pour créer un JAXBElement à partir de l'instance de l'objet. De cette façon, vous pouvez facilement sérialiser des instances de types d'élément non root en tant qu'éléments racine.

Vous devez donc simplement ajouter une déclaration & "; élément &"; portant le même nom, en plus de toute définition complexType que vous souhaitez utiliser comme élément de niveau supérieur, et ObjectFactory générera le méthodes d'usine attendues.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top