JAXB运行良好,直到我需要执行类似bean的操作,我无法修改源代码。如果bean没有默认构造函数,或者它引用了我想标记为transient的对象,那么我就会写一个单独的bean,我可以对其进行注释,然后手动从另一个bean复制信息。
例如,我想序列化异常对象,但发现唯一的方法是使用需要使用com.sun。*类的hack。
那么,还有哪些替代方案?什么是下一个最受欢迎的xml序列化API?能够做到这样的事情会很好:
在序列化时选择是否在结果中包含某些字段。 (在运行序列化程序时标记事物)。
使用引用或其他方式处理对象图中的循环。
也许注释一个对象,以便在版本1中以一种方式序列化事物,而在版本2中,它将它们序列化为另一种。然后在序列化时我只选择对象的哪个版本或序列化。
有办法从对象的注释生成XSD。
基本上我只是想要比JAXB目前更灵活。
答案 0 :(得分:2)
想要一个超级可配置序列化框架的标准答案是xstream。
答案 1 :(得分:2)
JAXB是一个规范,因此您可以从不同的实现中选择。 EclipseLink JAXB (MOXy)对您提出的问题进行了扩展:
外化元数据
在处理无法对源进行注释或将多个映射应用于对象模型的类时非常有用。
基于XPath的映射
真正的中间相遇OXM映射:
JPA兼容性
包括对双向关系的支持。
答案 2 :(得分:1)
另请参阅JIBX。这是一个很好的xml< - >对象映射器。我的经验是,如果你的对象有一些有点时髦的关系,通常更容易创建一个隐藏复杂性的包装器对象,然后用JIBX映射该对象。
答案 3 :(得分:0)
XStream是一个流行的XML序列化库,声称能够序列化任何内容,无论构造函数或其他问题(甚至反序列化最终字段)。试一试。
不需要修改对象。序列化内部字段,包括私有和最终字段。支持非公开和内部类。类不需要具有默认构造函数。