Подтвердить что ты не робот

Как я могу заставить JAXB вызывать метод после того, как он завершил развязывание XML файла в объект?

Я использую JAXB для unmarshall файла XML в Java-объект - стандартный материал. Как только JAXB завершит это, я хотел бы, чтобы метод вызывался на вновь созданном объекте.

Есть ли механизм для этого? Я бы предпочел, чтобы объект, а не внешний объект, сделал это, чтобы сохранить конструкцию в одном месте.

Спасибо.

4b9b3361

Ответ 1

Чтобы выполнить код после размонтирования, вам нужно Unmarshaller-Listener

Однако я не уверен, что если слушатель вызывается после свойства установлены или раньше.

ПРИМЕЧАНИЕ: Слушатель доступен с JAXB- 2.0 (JDK- 6)

Ответ 2

Вы можете просто добавить следующий метод к определению вашего объекта:

void afterUnmarshal(Unmarshaller u, Object parent) {
  ...
}

Он будет вызываться, как только текущий объект будет полностью десериализован. См. Также документацию о unmarshalling callbacks

Ответ 3

В дополнение к Unmarshaller.Listener вы можете добавить следующие методы к классам модели домена.

  • public void beforeUnmarshal(Unmarshaller unmarshaller, Object parent)
  • public void afterUnmarshal(Unmarshaller unmarshaller, Object parent)

С: http://java.sun.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.Listener.html