【发布时间】:2011-06-16 20:32:11
【问题描述】:
有没有办法改变默认方式 jaxb 序列化/反序列化类型,在我的情况下是日期,而不通过注释和/或通过这里提到的 xml jaxb 绑定指定它 http://jaxb.java.net/guide/Using_different_datatypes.html
我基本上想做这样的事情:
JAXBContext jaxbContext = ...;
Marshaller marshaller = jaxbContext.createMarshaller().setAdapter(new DateAdapter(dateFormat));
拥有一个以自定义方式序列化/反序列化日期的预配置 JaxBContext 或 Marshaller/Unmarshaller..
找不到任何显示如何通过注解或静态使用 xml 绑定文件的资源。 谢谢!
【问题讨论】:
-
javax.xml.bind.Marshaller.setAdapter(XmlAdapter)不适合你吗? -
@lexicore -
javax.xml.bind.Marshaller.setAdapter(XmlAdapter)用于在模型已配置为使用XmlAdapter而不引入XmlAdapter时传入初始化的XmlAdapter。示例见:stackoverflow.com/questions/5319024/… -
@XmlJavaTypeAdapter(s)注释是不可避免的,这对框架来说是一个很大的痛苦。对于 XStream,我们可以注册一个转换器以应用于所有 Foo 字段,但对于 jaxb 我们不能,因为它希望我们更改用户的域 package-info.java 文件...