Java XML绑定
您使用什么将XML绑定到Java?JAXB、Castor和XMLBeans是一些可用的选择。我看到的比较都是三、四年前的。我愿意接受其他建议。编组/解编性能和易用性尤其令人感兴趣Java XML绑定,java,xml,jaxb,castor,xmlbeans,Java,Xml,Jaxb,Castor,Xmlbeans,您使用什么将XML绑定到Java?JAXB、Castor和XMLBeans是一些可用的选择。我看到的比较都是三、四年前的。我愿意接受其他建议。编组/解编性能和易用性尤其令人感兴趣 澄清:我想了解的不仅仅是您使用的框架,还有您使用其中一个框架而不是其他框架的理由。我们使用Castor。它非常适合我们的需要。我们使用。编组/解编组非常简单。参见他们的示例。是这里使用的。它非常快,但是绑定可能有点棘手。但是,如果您有描述域对象的XML模式,它就特别有用,因为它确实可以很好地映射到XSD(甚至有一个测试
澄清:我想了解的不仅仅是您使用的框架,还有您使用其中一个框架而不是其他框架的理由。我们使用Castor。它非常适合我们的需要。我们使用。编组/解编组非常简单。参见他们的示例。是这里使用的。它非常快,但是绑定可能有点棘手。但是,如果您有描述域对象的XML模式,它就特别有用,因为它确实可以很好地映射到XSD(甚至有一个测试版工具XSD2Jibx,它可以获取XSD并创建存根域类和映射,然后您可以获取并引导它们以适应现有的域模型)
它处理字节码,因此必须在Java.class文件的初始编译之后运行。您可以使用Maven插件,也可以直接使用它(Eclipse插件似乎不适合我)。我使用Jaxb取得了不同的成功。当时(几年前),整个文档都很平淡,基本使用文档(包括在何处下载实现)很难找到或更改 编写Java类的解析器非常好,与原始XSD几乎没有差异(尽管我认为它在支持抽象XML元素方面存在问题)
从那以后我就没有使用过它,但我有一个即将到来的项目,它需要这样一个框架,我很想知道其他人是如何使用上述框架的。我7年前使用过castor,它工作得相当好。使用DTD。当时没有太多的选择 在当前项目中,我使用了
1) JAXB——基于标准、可用的参考实现、可用的命令行和ant工具。最新版本-2.1.8需要java 5+。
2) XStream——用于Soap解组——需要Java5+。没有JAXB最新版本那么快,也不符合标准 BR,
~A。我以前使用过JiBX,但事实证明JiBX明显更好,特别是在性能方面(将一些应用程序代码从Castor XML直接移植到JiBX使其速度提高了9倍)。我还发现JiBX的映射格式比Castor的更优雅
JiBX通过使用编译后字节码操作而不是Castor采用的反射方法来实现其性能。这样做的好处是,对编写映射类的方式提出的要求较少。仅仅为了满足这些工具,不需要getter、setter和arg构造函数。大多数情况下,您可以在不考虑映射问题的情况下编写类,然后在不进行修改的情况下对其进行映射。如果您想做出明智的决定,您需要明确为什么要在XML和java对象之间进行转换。原因是这个领域的不同技术试图解决不同的问题。不同的工具分为两类:
在任何一种情况下,如果您使用J2EE,您都需要仔细注意从JPA检索的类,因为类代理和特定于持久性的集合类型可能会混淆绑定/序列化工具。如果您有XML的XSD,并且不需要将数据绑定到现有的一组类,那么我非常喜欢。基本上,它是这样工作的:
- 编译XSD
- 使用生成的java类来读/写符合此模式的文档
EmployeesDocument empDoc = EmployeesDocument.Factory.parse(xmlFile);
相关:XmlBeans是一个很好的选择,特别是当您有“损坏的”XSD/WSDL文件时 唐提到 EmployeesDocument empDoc=EmployeesDocument.Factory.parse(xmlFile) ..但它也可以使用节点、文件或任何源 不要与名称空间发生冲突, 遍历到要解组的对象, 和工厂。解析它
但愿我能在两周前找到它。我想知道完全相同的问题,最后我找到了由IBM进行的性能测试。我想JiBX是我的选择,呵呵。哇,看起来很漂亮!Xstream是一种xml序列化技术,而不是绑定技术。是的,序列化和绑定之间的区别很重要。请检查:感谢您的输入。我正在寻找一个绑定解决方案。这适用于具有现有XSD的RESTful web服务。我们已经使用Castor很多年了。我想知道JAXB(或其他)更好/更差的原因。如果你至少熟悉XStream,你介意看看我关于XMLDecoder和XStream的问题吗?这项研究是从2003年开始的——有人知道最新的消息吗?这里似乎有很多好的链接:查看我的博客,了解JAXB示例:+1了解JiBX。我看到的最大优势是JiBX的使用方式。虽然代码生成是一种选择,但似乎有很多重点放在为自己的数据模型编写自己的映射上。任何让我