Могу ли я настроить привязки XJC для создания коллекций как Set вместо List - PullRequest
1 голос
/ 27 октября 2010

С учетом такой схемы:

<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. Это проект обратного инжиниринга, поэтому я не слишком заинтересован в том, чтобы убедиться, что схема принудительно применяет его.

Можно ли сгенерировать элемент PageContainer как Set<PageContainerType>, указав что-либо в схеме или в привязках XJC?

1 Ответ

1 голос
/ 29 октября 2010

JAXB runtime (по крайней мере Metro и MOXy ) могут обрабатывать свойства типа java.util.Set.Для примера см .:

В реализациях Metro и MOXy JAXBтот же инструмент XJC для компиляции схем XML в классы Java.Вы можете разместить свой вопрос на следующем форуме:

Вы также можете достичь желаемого результата, написав плагин XJC:

...