Hyperjaxb: исключить элемент XML по свойству XML

У меня есть предопределенный XSD, который выглядит следующим образом:

<xs:element name="JavaClass1">
    <xs:complexType>
        <xs:sequence>
            ...
            <xs:element name="Date1" type="xs:date" minOccurs="0">
            </xs:element>
            <xs:element name="DateList1" type="xs:date" minOccurs="0" maxOccurs="5">
            </xs:element>
            ...
        </xs:sequence>
    </xs:complexType>
</xs:element>

Чтобы генерировать Java-классы из XSD и в то же время заменить XMLGregorianCalendar на java.util.DateЯ использовал следующую внешнюю привязку:

<globalBindings>
    <javaType
        name="java.util.Date"
        xmlType="xs:dateTime"
        parseMethod="XsdDateTimeConverter.unmarshal"
        printMethod="XsdDateTimeConverter.marshalDateTime"
    />
    <javaType
        name="java.util.Date"
        xmlType="xs:date"
        parseMethod="XsdDateTimeConverter.unmarshal"
        printMethod="XsdDateTimeConverter.marshalDate"
    />
</globalBindings>

Я нашел это решение здесь.

Теперь мне нужно сделать это только для атрибута Date1, а не для DateList1. Есть ли способ, как исключить DateList1 с помощью его свойства maxOccurs="5"?

1 ответ

Решение

Вы можете применить javaType локальная настройка сгенерированного свойства. Что-то вроде:

<bindings node=".../xs:element[@name='Date1']">
    <property>
        <baseType>
            <javaType .../>
        </baseType>
    </property>
</bindings>
Другие вопросы по тегам