你可以选择通过JAXB序列化一个类属性吗?

时间:2010-08-25 19:26:50

标签: java xml serialization jaxb jax-ws

是否可以使用一些动态标志通过JAX-B选择性地序列化类的属性?

e.g。假设我有

@XmlRootElement
public class TodoItem {
 private int id;
 private String title;
 private String note;

 // getters, setters

}

以及以下Web服务操作:

 public TodoItem getTodoItemFull(int id) {  .... }
 public TodoItem getTodoItemMinimal(int id) { .... }

是否有可以使用的特殊注释,以便我可以在运行时决定属性“note”是否会被序列化?换句话说,getTodoItemFull()方法将返回完全序列化的类,而getTodoItemMinimal()方法将返回没有“note”xml元素的序列化类?

谢谢,!

1 个答案:

答案 0 :(得分:1)

您可以通过将多个映射应用于对象模型来完成此操作。标准JAXB仅允许您通过注释应用一个映射。其他JAXB实现(如MOXy(我领导此实现))也允许您将元数据表示为XML:

您可以在一组元数据上构建一个JAXBContext,这些元数据完全映射“getTodoItemFull”将使用的对象模型,另一个JAXBContext构建在另一组元数据上,这些元数据部分映射了getTodoItemMininmal将使用的对象模型。 p>