在我的应用程序中用JAXB替换XStream



目前在应用程序中,我们得到一个SOAP响应xml,其中每个元素都附加了名称空间。我在代码中硬编码了名称空间被忽略,因为应用程序需要干净的xml。但是经过测试,它被认为是一个弱的解决方案,因为名称空间将来可能会更改。有人向我推荐使用jaxb。我目前正在使用xstream,因为我们可以直接读取xml。所以我开始调查jaxb了。但是jaxb需要xsd。我已经理解了这个过程,但是我不确定如何在我的应用程序中实现Jaxb,因为我得到的是xml响应。所以,我的问题是,在这种情况下,是否有可能用jaxb代替xstream ?
由于

注意:我是EclipseLink JAXB (MOXy)领导和JAXB 2 (JSR-222)专家组的成员。

我正在使用xstream目前,因为我们可以直接读取xml。所以我我开始调查jaxb了。但是jaxb需要xsd。

认为JAXB需要XML模式是一种常见的误解(甚至在XStream FAQ中也有)。事实是JAXB被设计为从对象开始,并提供了从XML模式生成带注释的对象模型的选项。这在处理大型XML模式时非常有用:

  • http://wiki.eclipse.org/EclipseLink/Examples/MOXy/GettingStarted

当前在应用程序中,我们得到一个带有名称空间的SOAP响应xml附加到每个元素上。我已经硬编码到我的代码名称空间被忽略,因为应用程序需要干净的xml。但经过测试,它被认为是一个弱的解决方案,因为名称空间将来可能会改变。

JAXB对映射名称空间有很好的支持。这可以在包级别(@XmlSchema)、类级别(@XmlType)或字段/属性级别(@XmlAttribute/@XmlElement)完成:

  • http://blog.bdoughan.com/2010/08/jaxb-namespaces.html
我已经理解了这个过程,但是我不确定如何实现Jaxb因为我得到了一个xml响应

下面是一篇文章的链接,该文章使用JAXB和XStream将相同的对象模型映射到相同的XML文档。它会让你对一些概念之间的关系有一个感觉:

  • http://blog.bdoughan.com/2010/10/how-does-jaxb-compare-to-xstream.html

另一件需要注意的事情是JAXB引用的是一个标准(JSR-222),而不是一个特定的实现。实际上有几种实现,包括:

  • EclipseLink精力充沛
  • Metro(参考实现)
  • Apache JaxMe

最新更新