有没有办法让JAXB为已定义的元素生成Collection Set而不是List?
例如,为此xsd:
生成一套书籍<xs:element name="Collection">
<xs:complexType>
<xs:sequence>
<xs:element name ="books">
<xs:complexType>
<xs:sequence>
<xs:element name="book" type="bookType" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
使用以下bindings.xml
时<jxb:bindings schemaLocation="schema.xsd">
<jxb:bindings node="//xs:element[@name='Shop']/xs:complexType/xs:sequence/xs:element[@name='books']">
<jxb:property collectionType="java.util.HashSet" />
</jxb:bindings>
</jxb:bindings>
生成具有混凝土HashSet实施的书籍列表:
List<Book> books = new HashSet<Book>();
答案 0 :(得分:6)
我不认为可以使用自定义绑定来完成,因为根据Customizing JAXB Bindings上的指南:
collectionType
定义了 定制价值propertyCollectionType
,这是 该属性的集合类型。 如果指定propertyCollectionType
, 可以索引或任何索引 完全限定的类名 实现java.util.List
。
但是,如果您编写了自己的 xjc插件,则可能会这样做。请查看以下文章,了解如何:Writing a plug-in for the JAXB RI is really easy