Java: JAXB: маршеллинг JAXBElement <Calendar>в xs: дата не верна - PullRequest
6 голосов
/ 27 сентября 2011

У меня проблема с использованием JAXB. Я создал свои Java-классы с помощью xjc (используя xsd-схему) и имею глобальную привязку для типов данных XML xs: date xs: dateTime и xs: time to java.util.Calendar с анализом и методом печати. ​​

Все работает нормально, пока я не пометил некоторые поля xs: date как nillable. Xjc создает оболочки JAXBElement для этих свойств. Если эти поля становятся не маршалированными, распечатывается дата, включая информацию о времени, которая приводит к ошибкам проверки.

Можно ли заставить маршаллера преобразовать его в xs: date вместо xs: dateTime?

Можно ли указать привязку для тех полей, которая получает специальный XMLAdapater, который преобразует эти поля?

Свойство внутри Java-класса выглядит так:

@XmlElementRef(name = "dateField", namespace = "namespace", type = JAXBElement.class)

protected JAXBElement<Calendar> dateField;

и соответствующий xsd-выглядит как

<xs:element name="dateField" minOccurs="0" nillable="true" type="xs:date" />

Может кто-нибудь помочь мне, пожалуйста?

Спасибо и всего наилучшего,

Arne

1 Ответ

1 голос
/ 03 октября 2011

Вам действительно нужно отобразить Календарь внутри JAXBElement? Было бы неправильно использовать устаревшую XMLGregorianCalendar (а затем вы можете преобразовать его в Date)?

...