2009-09-14 9 views

Répondre

3

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

0

Avez-vous des éléments dans votre schéma, ou juste des types? C'est généralement la raison.

0

JAXB génère des méthodes d'usine qui créent une JAXBElement d'une instance d'objet que si votre XSD contient à la fois une définition complexType et une définition de l'élément distinct à l'aide que complexType AVEC LE MÊME NOM, par exemple:

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

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

Dans ce Dans le cas contraire, JAXB n'annoncera pas la classe générée avec une annotation @XmlRootElement, mais fournira les méthodes d'usine dont vous avez besoin pour créer un JAXBElement à partir de l'instance d'objet. De cette façon, vous pouvez sérialiser facilement les instances de types d'éléments non-root en tant qu'éléments racine. Par conséquent, vous devez simplement ajouter une déclaration "element" avec le même nom en plus de toute définition complexType que vous souhaitez utiliser en tant qu'élément de niveau supérieur, et ObjectFactory génèrera les méthodes usine attendues.

Questions connexes