Рассмотрим образец XML
документа, который неармируется в структуру объектов в java
с помощью JAXB
, например:
Unmarshaller um = jc.createUnmarshaller();
RootElement object = um.unmarshal(inputStream);
Для некоторых целей я хочу иметь возможность обрабатывать события каждого нового объекта создания этой структуры. Внутри обработчиков я бы хотел иметь ссылки на эти вновь созданные объекты. Интересно: возможно ли это как-то в JAXB
?
Более конкретно, если моя структура выглядит примерно так:
public class RootElement {
ChildElementType1 child1;
ChildElementType2 child2;
...
}
Итак, я хочу обрабатывать события создания объектов всех этих типов (RootElement
, ChildElementType
,...).
Эти обработчики должны быть чем-то внешним, поэтому я не хочу размещать их внутри стандартных конструкторов моих объектов.
Да, возможно, используя интерфейс Listener
:
um.setListener(new Unmarshaller.Listener() {
@Override
public void afterUnmarshal(Object target, Object parent) {
// handle what you want
}
});