JAXB - Привязка элемента для установки вместо списка - PullRequest
7 голосов
/ 11 мая 2011

Есть ли способ заставить JAXB генерировать набор сбора вместо списка для определенного элемента?

Например, создание набора книг для этого 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>();

1 Ответ

6 голосов
/ 11 мая 2011

Я не думаю, что это можно сделать с помощью пользовательской привязки, потому что согласно руководству по Настройка привязок JAXB :

collectionType определяет значение настройки propertyCollectionType, который является типом коллекции для свойства.propertyCollectionType, если указано, может быть либо индексированным, либо любым полностью определенным именем класса, которое реализует java.util.List.

Однако это может быть возможно, если вы написали свой собственный xjcплагин .Взгляните на следующую статью, чтобы увидеть, как: Написать плагин для JAXB RI действительно просто

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...