23

我正在使用 JAXB 将 XML 文件解组为 Java 对象——标准的东西。一旦 JAXB 完成此操作,我希望在新创建的对象上调用一个方法。

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

谢谢。

4

3 回答 3

38

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

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

一旦当前对象被完全反序列化,它将被调用。另请参阅有关解组回调的文档

于 2010-12-07T15:56:24.153 回答
18

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

于 2010-07-05T21:04:33.117 回答
7

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

但是,我不确定是否在设置属性之后或之前调用侦听器。

注意:监听器从 JAXB- 2.0 (JDK - 6 )开始可用

于 2009-06-21T00:42:26.550 回答