我有一个XSD描述了一些复杂类型的序列,例如。
<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>
现在,当我使用JaxBs XJC将其转换为Java类时,它将在我的java.util.List
类中为我生成 Catalog
,并为{{{get} / setter 1}}。
但是,在使用java2wsdl的Axis2 webservice中使用它需要的是像 Category
这样的数组。
我对JaxB绑定有点熟悉,并且已经尝试使用:
指定集合类型Category[]
导致代码无效,因为它仍在使用<jaxb:property collectionType="Category[]"/>
,但使用构造函数java.util.List
。
当然,我总是可以在生成后编辑生成的代码,但是当我尝试重新生成它时会出现问题。
我现在得到的是:
new Category[]<Category>
我想要的是:
public class Catalog {
@XmlElement(name = "Category")
protected List<Category> category;
}
有什么想法吗? 我目前正在使用XJC 2.2.6和Axis2 1.6.2。
答案 0 :(得分:1)
我认为你需要使用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>
生成以下类:
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;
}
}
(使用org.apache.cxf cxf-xjc-plugin 2.6.2 maven插件)
您还需要在XSD中定义类别......