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 ...