在完成将XML文件解组为对象后,如何让JAXB调用方法?

时间:2009-06-10 15:31:46

标签: jaxb unmarshalling

我正在使用JAXB将XML文件解组为Java对象 - 标准的东西。一旦JAXB完成了这个,我就想在新创建的对象上调用一个方法。

有没有机制可以做到这一点?我更喜欢这个对象,而不是外部实体,这样做是为了将构造保持在一个地方。

感谢。

3 个答案:

答案 0 :(得分:32)

您可以简单地将以下方法添加到对象定义中:

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

一旦当前对象被完全反序列化,它将被调用。 另请参阅有关unmarshalling callbacks

的文档

答案 1 :(得分:16)

除了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

答案 2 :(得分:7)

为了能够在解组后执行代码,您需要 Unmarshaller-Listener

但是,我不确定,如果在之后调用了监听器 属性设置或之前。

注意:自JAXB- 2.0 (JDK- 6

以来,监听器可用