什么你是用于结合XML Java?修订、蓖麻、和XMLBeans是一些可用的选择。比较,我们看到的是所有三个或四岁。我很开放的其他建议。调动/解组绩效和便于使用的是特别令人感兴趣的。

澄清:我想看看不只是什么样的框架使用,但是你的理由对于使用一个比其他人。

有帮助吗?

解决方案

JiBX 。以前我使用的是 Castor XML ,但JiBX被证明要明显更好,特别是在性能方面(从Castor XML到JiBX的一些应用程序代码的直接端口使其快9倍)。我还发现JiBX的映射格式比Castor更优雅。

JiBX通过使用后编译字节码操作而不是Castor采用的反射方法来实现其性能。这样做的好处是它对编写映射类的方式提出的要求更少。不需要getter,setter和no-arg构造函数来满足这些工具。大多数情况下,您可以在不考虑映射问题的情况下编写类,然后在不进行修改的情况下对其进行映射。

其他提示

如果您想做出明智的决定,您需要明确为什么要在XML和Java对象之间进行转换。原因是这个领域的不同技术试图解决不同的问题。不同的工具分为两类:

  1. XML数据绑定 - 指将XML文档中的信息表示为计算机内存中的对象的过程。通常,这意味着定义XSD并生成等效的java源代码。不同语言之间的互操作是最重要的(因此使用XSD) - 最常用于实现基于SOAP的Web服务。
  2. XML序列化 - 指的是将内存对象的图形写入流中,以便可以在某处或某个时间重构它。你手工编写java类; xml表示具有次要的重要性。此外,对性能的需求往往更大,并且与.net等其他语言进行互操作的需求往往较低。
  3. 对于xml序列化,Xstream很难被击败。 JAXB是XML绑定的标准。

    在任何一种情况下,如果您使用J2EE,您需要特别注意从JPA检索的类,因为类代理和特定于持久性的集合类型可能会混淆绑定/序列化工具。

如果你有一个文件对于XML,你不需要结合的数据的现有设置的课程,然后我真的很喜欢 XMLBeans.基本上,它的工作原理是这样的:

  • 汇编文件
  • 使用产生的java类阅读写的文件符合这一模式

结合XML文件所产生的课程是一样简单:

EmployeesDocument empDoc = EmployeesDocument.Factory.parse(xmlFile); 

我们使用 xstream 。编组/解编是微不足道的。有关示例,请参阅他们的教程

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

XmlBeans是一个不错的选择,特别是如果你“破坏”了XSD / WSDL文件。

唐提到了

  

EmployeesDocument empDoc = EmployeesDocument.Factory.parse(xmlFile);

..但它也可以采用节点,文件或任何来源。

没有命名空间, 遍历要解组的对象, 和Factory.parse它。

希望我在2周前找到它。

我们使用Castor。它非常适合我们的需求。

我想知道完全相同的问题,最后我发现了IBM的这些性能测试。 http://www.ibm.com/developerworks/library/x-databdopt2/ 。我想,JiBX是我的选择,呵呵。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top