Java Castor XML绑定和JAXB绑定之间有什么区别

Java Castor XML绑定和JAXB绑定之间有什么区别,java,xml,jaxb,castor,Java,Xml,Jaxb,Castor,Castor XML和JAXB绑定之间的区别是什么,因为两者都是将java对象绑定到XML,反之亦然 更新: 使用Castor时,我可以假设packageA.ClassA和packageB.ClassA具有相同的属性和类名,只是它们位于不同的包中 packageA.ClassA - > XML -> packageB.ClassA 通过使用JAXB,如果我将对象packageA.ClassA转换为XML,并从XML解组到对象packageB.ClassA,我得到了转换错误 请注意

Castor XML和JAXB绑定之间的区别是什么,因为两者都是将java对象绑定到XML,反之亦然

更新:

使用Castor时,我可以假设
packageA.ClassA
packageB.ClassA
具有相同的属性和类名,只是它们位于不同的包中

packageA.ClassA - > XML -> packageB.ClassA 

通过使用JAXB,如果我将对象
packageA.ClassA
转换为XML,并从XML解组到对象
packageB.ClassA
,我得到了转换错误

请注意,JAXB是一个API,有多种可用的实现

Sun提供了一个参考实现,并将其与J2EE打包在一起(它在J2SE 1.6中也可用)。 Castor在JAXB从Sun问世之前就诞生了,它提供了一些额外的特性。但是,如果您只需要简单的XML绑定,那么参考Sun实现应该可以很好地工作

在这个问题上,JavaWorld有一个很好的解决方案。虽然有点陈旧,但这里解释的大多数观点仍然适用。你不会发现这篇文章提到了JAXB注释,这使得现在的事情变得更容易了

Simple是一个易于使用的绑定框架,可以使用最少的“简单”配置


DOM是一个完全不同的概念——它只涉及解析,而不涉及绑定。使用DOM解析器,您可以从XML中提取数据。但是它没有给你一个对象映射工具。因此,您仍然必须使用DOM提取数据,然后编写代码将这些数据推送到java对象

由于给定的
JAXBContext
实例将每个根XML元素名称与一个绑定类关联,因此会出现类强制转换异常

因此,当您将
packageA.ClassA
封送到XML,然后再次将其解组,结果将是一个
packageA.ClassA
,而您不能强制转换它


如果您想要解组一个
packageB.ClassA
,那么您需要构建第二个
JAXBContext
。第一个
JAXBContext
知道
packageA.ClassA
,第二个知道
packageB.ClassA
。第一个用于编组为XML,第二个用于解组。这将如您所期望的那样工作。

您好,感谢您对DOM的清晰解释concept@newbie如果你喜欢这个答案,请考虑接受它,或者至少给它一个赞成票。非常感谢。