2009-09-14 47 views

Respuesta

3

Solo algunos tipos en un enlace generado por JAXB2 XJC necesitan envolturas JAXBElement. Los tipos que tienen la anotación @XMLRootElement no necesitan el contenedor, por lo que la fábrica de objetos no genera uno.

0

¿Tiene elementos en su esquema, o solo tipos? Esta es usualmente la razón.

0

JAXB genera métodos de fábrica que crean un JAXBElement de una instancia de objeto sólo si su XSD contiene tanto una definición complexType y una definición elemento separado usando que complexType con el mismo nombre, por ejemplo:

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

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

En este caso, JAXB no anotará la clase generada con una anotación @XmlRootElement, pero proporcionará los métodos de fábrica que necesita para crear JAXBElement a partir de la instancia del objeto. De esta forma, puede serializar fácilmente instancias de tipos de elementos no raíz como elementos raíz.

Por lo tanto, solo debe agregar una declaración de "elemento" con el mismo nombre además de cualquier definición de tipo compleja que pretenda usar como un elemento de nivel superior, y ObjectFactory generará los métodos de fábrica esperados.

Cuestiones relacionadas