JAXB很好,直到我需要做一些复杂的事情。有哪些替代方案?

时间:2009-08-13 21:16:26

标签: java xml jaxb

JAXB运行良好,直到我需要执行类似bean的操作,我无法修改源代码。如果bean没有默认构造函数,或者它引用了我想标记为transient的对象,那么我就会写一个单独的bean,我可以对其进行注释,然后手动从另一个bean复制信息。

例如,我想序列化异常对象,但发现唯一的方法是使用需要使用com.sun。*类的hack。

那么,还有哪些替代方案?什么是下一个最受欢迎的xml序列化API?能够做到这样的事情会很好:

  • 在序列化时选择是否在结果中包含某些字段。 (在运行序列化程序时标记事物)。

  • 使用引用或其他方式处理对象图中的循环。

  • 也许注释一个对象,以便在版本1中以一种方式序列化事物,而在版本2中,它将它们序列化为另一种。然后在序列化时我只选择对象的哪个版本或序列化。

  • 有办法从对象的注释生成XSD。

基本上我只是想要比JAXB目前更灵活。

4 个答案:

答案 0 :(得分:2)

想要一个超级可配置序列化框架的标准答案是xstream

答案 1 :(得分:2)

答案 2 :(得分:1)

另请参阅JIBX。这是一个很好的xml< - >对象映射器。我的经验是,如果你的对象有一些有点时髦的关系,通常更容易创建一个隐藏复杂性的包装器对象,然后用JIBX映射该对象。

答案 3 :(得分:0)

XStream是一个流行的XML序列化库,声称能够序列化任何内容,无论构造函数或其他问题(甚至反序列化最终字段)。试一试。

  

不需要修改对象。序列化内部字段,包括私有和最终字段。支持非公开和内部类。类不需要具有默认构造函数。