Java XML结合[封闭]
题
什么你是用于结合XML Java?修订、蓖麻、和XMLBeans是一些可用的选择。比较,我们看到的是所有三个或四岁。我很开放的其他建议。调动/解组绩效和便于使用的是特别令人感兴趣的。
澄清:我想看看不只是什么样的框架使用,但是你的理由对于使用一个比其他人。
解决方案
JiBX 。以前我使用的是 Castor XML ,但JiBX被证明要明显更好,特别是在性能方面(从Castor XML到JiBX的一些应用程序代码的直接端口使其快9倍)。我还发现JiBX的映射格式比Castor更优雅。
JiBX通过使用后编译字节码操作而不是Castor采用的反射方法来实现其性能。这样做的好处是它对编写映射类的方式提出的要求更少。不需要getter,setter和no-arg构造函数来满足这些工具。大多数情况下,您可以在不考虑映射问题的情况下编写类,然后在不进行修改的情况下对其进行映射。
其他提示
如果您想做出明智的决定,您需要明确为什么要在XML和Java对象之间进行转换。原因是这个领域的不同技术试图解决不同的问题。不同的工具分为两类:
- XML数据绑定 - 指将XML文档中的信息表示为计算机内存中的对象的过程。通常,这意味着定义XSD并生成等效的java源代码。不同语言之间的互操作是最重要的(因此使用XSD) - 最常用于实现基于SOAP的Web服务。
- XML序列化 - 指的是将内存对象的图形写入流中,以便可以在某处或某个时间重构它。你手工编写java类; xml表示具有次要的重要性。此外,对性能的需求往往更大,并且与.net等其他语言进行互操作的需求往往较低。 醇>
对于xml序列化,Xstream很难被击败。 JAXB是XML绑定的标准。
在任何一种情况下,如果您使用J2EE,您需要特别注意从JPA检索的类,因为类代理和特定于持久性的集合类型可能会混淆绑定/序列化工具。
如果你有一个文件对于XML,你不需要结合的数据的现有设置的课程,然后我真的很喜欢 XMLBeans.基本上,它的工作原理是这样的:
- 汇编文件
- 使用产生的java类阅读写的文件符合这一模式
结合XML文件所产生的课程是一样简单:
EmployeesDocument empDoc = EmployeesDocument.Factory.parse(xmlFile);
Jibx 就是这里使用的。它非常快,但绑定可能有点棘手。但是,如果你有描述你的域对象的XML模式,它特别有用,因为它真的可以很好地映射到XSD(甚至还有一个beta工具XSD2Jibx可以接受XSD并创建存根域类和映射,然后你可以采取并哄骗它们适合您现有的域模型)。
它操纵字节码,因此必须在Java .class文件的初始编译之后运行。您可以使用Maven插件,或直接使用它(Eclipse插件似乎对我不起作用)。
我已经使用的修订与不同的成功。在时间(几年)的整体文件是黯淡的和基本的使用情况的文件(包括下载的实现)是很难找到或变化。
分析器,其写的Java类是很好点的差异,对原来的文件(虽然我觉得它有问题支持的抽象XML元素)。
我还没有使用它,因为,但我有一个即将开展的项目,这将需要这样一个框架,我会有兴趣知道其他人展与上述内容。
我7年前使用过蓖麻 - 它运作得相当好。使用DTD。当时没有多少选择。
在目前的项目中,我使用了
1)JAXB - 基于标准,可用的参考实现,可用的命令行和ant工具。最新版本 - 2.1.8需要java 5+。
2)XStream - 用于Soap unmarshalling - 需要Java 5+。不像JAXB最新的那样快速和标准兼容。
BR,结果 〜A
相关: Java中的XML序列化?
XmlBeans是一个不错的选择,特别是如果你“破坏”了XSD / WSDL文件。
唐提到了
EmployeesDocument empDoc = EmployeesDocument.Factory.parse(xmlFile);
..但它也可以采用节点,文件或任何来源。
没有命名空间, 遍历要解组的对象, 和Factory.parse它。
希望我在2周前找到它。
我们使用Castor。它非常适合我们的需求。
我想知道完全相同的问题,最后我发现了IBM的这些性能测试。 http://www.ibm.com/developerworks/library/x-databdopt2/ 。我想,JiBX是我的选择,呵呵。