我是否可以配置XJC绑定以将集合生成为Set而不是List

时间:2010-10-27 04:48:05

标签: java xsd jaxb xjc

给出如下的模式:

<xs:element name="Group" type="GroupType"/>

<xs:complexType name="GroupType">
    <xs:sequence>
        <xs:element type="OptionsType" name="Options" maxOccurs="1" minOccurs="1"/>
        <xs:element type="PageContainerType" name="PageContainer" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>

<xs:complexType name="PageContainerType">
    <xs:sequence>
      ...
    </xs:sequence>
</xs:complexType>

XJC将生成类似以下内容的Java:

public class GroupType {
  @XmlElement(name = "Options", required = true)
  protected OptionsType options;
  @XmlElement(name = "PageContainer")
  protected List<PageContainerType> pageContainer;
  ...
}

我想为PageContainer元素强制执行一个唯一的集合。这是一个逆向工程项目,所以我不太关心确保架构明确强制执行它。

是否可以通过在架构或XJC绑定中指定内容来生成PageContainer元素作为Set<PageContainerType>

1 个答案:

答案 0 :(得分:1)

JAXB运行时(至少MetroMOXy)可以处理java.util.Set类型的属性。有关示例,请参阅:

Metro和MOXy JAXB实现都使用相同的XJC工具将XML模式编译为Java类。您可能希望将您的问题发布到以下论坛:

您也可以通过编写XJC插件来实现所需的结果:

相关问题