我正在努力解决一个简单的JAXB定制问题。我有这样的架构。 (它实际上是Bing Maps Web Services架构的一小部分)
<xs:complexType name="GeocodeOptions">
<xs:sequence>
<xs:element minOccurs="0" name="Count" nillable="true" type="xs:int" />
<xs:element minOccurs="0" name="Filters" nillable="true" type="ArrayOfFilterBase" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ArrayOfFilterBase">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="FilterBase" nillable="true" type="FilterBase" />
</xs:sequence>
</xs:complexType>
现在,当我使用wsimport生成java类时,它会创建如下代码结构:
public class GeocodeOptions implements Serializable {
...
public ArrayOfFilterBase getFilters() {
...
}
public void setFilters(ArrayOfFilterBase value) {
...
}
}
public class ArrayOfFilterBase implements Serializable {
...
public List<FilterBase> getFilterBaseList() {
...
}
}
正如您所注意到的,ArrayOfFilterBase是一个容器类,我想省略它。我想直接在GeocodeOptions类中使用getFilterBaseList()方法。
是否可以通过JAXB自定义来实现?我努力寻找但无法找到解决方案。
感谢您的帮助。
此致 Nabeel Mukhtar
答案 0 :(得分:5)
是的,您可以使用@XmlElementWrapper注释省略容器。您的代码应如下所示:
public class GeocodeOptions implements Serializable {
@XmlElementWrapper(name = "...")
@XmlElement(name = "...")
public List<FilterBase> getFilterBaseList() {
...
}
}