JAXB解组返回空对象

时间:2015-08-17 17:45:42

标签: jaxb unmarshalling

当在testng单元测试用例中运行时,JAXB将XML文件解组为对象可以正常工作。

当使用相同的代码在另一个进程中解组相同的XML文件时,我得到一个空对象。我可以验证是否为XML文档中的每个元素创建了对象,并且调用了所有适配器。在unmarshaller中设置事件处理程序,但没有验证问题。当我设置xmlns属性和前缀时,即使返回空对象,行为也略有不同。

我看过几个帖子但与我面临的问题无关。

请建议我应该从哪里开始寻找问题。解组时是否必须指定模式?

2 个答案:

答案 0 :(得分:1)

这篇文章中提到了原因:JAXB does not call Setter method

确认已调用列表的get方法并填充。

用数组替换列表,问题解决了。

答案 1 :(得分:-1)

JAXB的优点在于它不会调用setter,它使用来自getter的相同List。如果从XSD生成JAXB类;您甚至可以注意到maxOccurs=unbound required=true的元素根本没有设置器。