你用什么来将XML绑定到Java?JAXB,Castor和XMLBeans是一些可用的选择.我见过的比较都是三四年了.我愿意接受其他建议.编组/解组的性能和易用性是特别令人感兴趣的.
澄清:我不仅希望看到您使用的框架,而且还希望看到使用其中一个框架的原因.
如果您想做出明智的决定,您需要明确为什么要在XML和Java对象之间进行转换.原因是这个领域的不同技术试图解决不同的问题.不同的工具分为两类:
XML数据绑定 - 指将XML文档中的信息表示为计算机内存中的对象的过程.通常,这意味着定义XSD并生成等效的java源代码.不同语言之间的互操作是最重要的(因此使用XSD) - 最常用于实现基于SOAP的Web服务.
XML序列化 - 指的是将内存对象的图形写入流中,以便可以在某处或其他时间重构它.你手工编写java类; xml表示具有次要的重要性.此外,对性能的需求通常更大,并且与.net等其他语言进行互操作的需求通常较低.
对于xml序列化,Xstream很难被击败.JAXB是XML绑定的标准.
在任何一种情况下,如果您使用J2EE,您需要特别注意从JPA检索的类,因为类代理和特定于持久性的集合类型可能会混淆绑定/序列化工具.
JiBX.之前我使用的是Castor XML,但是JiBX被证明要明显更好,特别是在性能方面(从Castor XML到JiBX的一些应用程序代码的直接端口使它快9倍).我还发现JiBX的映射格式比Castor更优雅.
JiBX通过使用后编译字节码操作而不是Castor采用的反射方法来实现其性能.这样做的好处是它对编写映射类的方式提出的要求更少.不需要getter,setter和no-arg构造函数来满足这些工具.大多数情况下,您可以在不考虑映射问题的情况下编写类,然后无需修改即可映射它.