在将 XML 文件解组为对象后,如何让 JAXB 调用方法?
Posted
技术标签:
【中文标题】在将 XML 文件解组为对象后,如何让 JAXB 调用方法?【英文标题】:How can I have JAXB call a method after it has completed unmarshalling an XML file into an object? 【发布时间】:2010-11-01 20:38:56 【问题描述】:我正在使用 JAXB 将 XML 文件解组为 Java 对象——标准的东西。一旦 JAXB 完成此操作,我希望在新创建的对象上调用一个方法。
有没有一种机制可以做到这一点?我更喜欢对象,而不是外部实体,这样做是为了将构造保持在一个地方。
谢谢。
【问题讨论】:
我不明白,你想在解组过程之后自动调用一个方法吗? 是的;确切地。类似于 JUnit 的 @BeforeClass,在构造和调用变量之后调用方法。 【参考方案1】:您可以简单地将以下方法添加到您的对象定义中:
void afterUnmarshal(Unmarshaller u, Object parent)
...
一旦当前对象被完全反序列化,它就会被调用。 另请参阅有关unmarshalling callbacks的文档
【讨论】:
【参考方案2】:除了 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
【讨论】:
【参考方案3】:为了能够在解组后执行代码,您需要 Unmarshaller-Listener
但是,我不确定是否在 属性设置或之前。
注意:监听器自 JAXB-2.0 (JDK-6) 起可用
【讨论】:
以上是关于在将 XML 文件解组为对象后,如何让 JAXB 调用方法?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jaxb API 将 XML 解组为 Java 对象时获取 NullPointerException