我希望用jaxb完成一些条件编组。像这样:
Class A{
//Only marshall when condition X applies
public String fieldOne;
//Only marshall when condition Y applies
public String fieldTwo;
//Always marshall
public String fieldThree;
}
基本上我有2种不同的Web服务方法使用相同的模型,但我需要在每种Web服务方法上发送的信息不同。
到目前为止,我最好的选择是创建一个自定义XMLJavaTypeAdapter来验证某些条件逻辑。当我不想要对象时,适配器将返回null,当我确实需要它编组时它会自行返回。
我想看看是否有人有更好的选择。我的jaxb上下文非常复杂,并且已经有一些适配器层。
提前致谢。
答案 0 :(得分:2)
到目前为止,我最好的选择是创建自定义XMLJavaTypeAdapter 它验证了一些条件逻辑。适配器将返回null 当我不想要这个物体的时候,当我确实需要这个物体的时候它就会被摧毁 回归自己。
我一直在那里做到这一点,它变得非常混乱非常快。如果你可以使用MOXy(我看到你的帖子用moxy标记),你可以使用XmlNamedObjectGraph注释创建在序列化实例时包含的元素的命名配置文件。
Blaise Doughan(MOXy项目的团队负责人)explains it better than I can。
Blaise的博客文章展示了如何使用注释,但他还写了a page on the EclipseLink wiki,其中显示了如何以编程方式进行注释。