tutorial que jaxbcontext example español ejemplo java jaxb xsd axis2 xjc

java - que - Generación de matrices para secuencias XSD a través de JaxB JXC



que es jaxbcontext (1)

Tengo un XSD que describe algunas secuencias de tipos complejos, por ejemplo

<xs:complexType name="Catalog"> <xs:sequence> <xs:element name="Category" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="ParentCategoryIDRef"/> <xs:element type="xs:string" name="Method"/> </xs:sequence> <xs:complexType> </xs:element> </xs:sequence> <xs:complexType>

Ahora cuando uso JaxBs XJC para convertir esto en clases Java, me generará java.util.List en mi clase Catalog para el campo y getter / setter de Category .

Sin embargo, lo que necesito para usarlo en un servicio web Axis2 usando java2wsdl son las matrices como Category[] .

Estoy un poco familiarizado con los enlaces JaxB y ya he intentado especificar el tipo de colección usando:

<jaxb:property collectionType="Category[]"/>

que dio como resultado un código no válido, porque todavía estaba usando un java.util.List , pero con un constructor new Category[]<Category> .

Por supuesto, siempre puedo editar el código generado después de la generación, pero esto causaría problemas cuando intente volver a generarlo.

Lo que tengo ahora es:

public class Catalog { @XmlElement(name = "Category") protected List<Category> category; }

Lo que quiero es:

public class Catalog { @XmlElement(name = "Category") protected Category[] category; }

¿Algunas ideas? Actualmente estoy usando XJC 2.2.6 con Axis2 1.6.2.


Creo que necesitas usar la etiqueta javaType:

<xs:complexType name="catalog"> <xs:sequence> <xs:element name="category" type="ns:Category" > <xs:annotation> <xs:appinfo> <jxb:javaType name="Category[]"/> </xs:appinfo> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType>

Genera la siguiente clase:

public class Catalog { @XmlElement(required = true, type = Category.class) protected Category[] category; public Category[] getCategory() { return category; } public void setCategory(Category[] value) { this.category = value; } }

(Usando el plugin org.apache.cxf cxf-xjc-plugin 2.6.2 maven)

También necesitarás la definición de Categoría en tu XSD ...