У меня есть XML-файл в формате, описанном ниже. В настоящее время я использую JAXB для развязывания XML-элементов (event
) объектам Java (Event
). Все свойства работают хорошо, за исключением одного ...
Как вы можете видеть в XML, то date
элемент хранит только дата и time
магазины только время мероприятия. Я хотел бы объединить эти два элемента XML в одно поле LocalDataTime с именем time
с соответствующими геттерами и сеттерами.Unmarshalling нескольких XML-элементов в одном поле с использованием JAXB
XML:
...
<event>
...
<date>2014-02-19</date>
<time>2000-01-01T14:17:00Z</time>
...
</event>
...
Желаемая Java объекта:
public class Event {
...
// Returns a combination of the date and time stored in the XML
public LocalDateTime getDateTime() {
return dateTime;
}
...
}
Моя первая мысль была использовать XMLAdapter
, но кажется, что это только позволяет мне карту 1 XML-элемент 1 объект Java.
После этого я попытался реализовать это, переопределив сеттеры setTime
и setDate
. Эти сеттеры каждый раз изменяли время или дату сохраненного времени. Но я не смог заставить его работать, и это тоже казалось довольно уродливым способом сделать это.
Я уже читал следующие JAXB convert multiple attributes to one type while unmarshalling. Но для этого проекта я бы предпочел не использовать внешнюю библиотеку, такую как MOXy.
Кто-нибудь знает, как это сделать, используя исключительно JAXB в clean way?