How can I have JAXB call a method after it has completed unmarshalling an XML file into an object?

旧城冷巷雨未停 提交于 2019-11-26 16:34:13

问题


I am using JAXB to unmarshall an XML file into a Java object -- standard stuff. Once JAXB has completed this, I'd like a method to be called on the newly created object.

Is there a mechanism to do this? I'd prefer the object, not an external entity, do this to keep construction in one place.

Thanks.


回答1:


To be able to execute code after unmarshalling took place, you need an Unmarshaller-Listener

However, I'm not sure, if the listener is invoked after the properties are set or before.

NOTE: The listener is available since JAXB-2.0 (JDK-6)




回答2:


You can simple add the following method to your object definition:

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

It will be called once the current object has been completely deserialized. See also the documentation about unmarshalling callbacks




回答3:


In addition to the Unmarshaller.Listener you can add the following methods to your domain model classes themselves.

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

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



来源:https://stackoverflow.com/questions/976378/how-can-i-have-jaxb-call-a-method-after-it-has-completed-unmarshalling-an-xml-fi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!