简单的Java Xml到POJO映射/绑定?

我试图找出将xml文件映射到普通旧java对象的最简单方法。

注意:在我的例子中,xml与我想要的POJO不完全匹配。

///////// THE XML    Cat   V02.00   ////// THE INTENDED POJO class Animal { private String name; private String versionIdentifier; } 

常规JAXB(带注释)将无法工作,因为JAXM元素名称注释不允许我指定嵌套元素。 (即standardName / Name)。

我看过Jibx,但看起来过于复杂,并没有为我想做的事情提供完整的例子。

卡斯特罗似乎能够做我想做的事情(使用映射文件),但我想知道是否还有其他可能的解决方案。 (可能这会让我跳过映射文件,只允许我在注释中指定所有内容)。

谢谢

本文可能对您有所帮助……它只需要您了解xpath http://onjava.com/onjava/2007/09/07/schema-less-java-xml-data-binding-with-vtd-xml.html

EclipseLink JAXB(MOXy)允许您执行您要查找的基于路径的映射:

 @XmlRootElement class Animal { @XmlPath("standardName/Name/text()") private String name; @XmlPath("standardVersion/VersionIdentifier/text()"); private String versionIdentifier; } 

有关更多信息,请参阅

EclipseLink还允许使用外部配置文件指定元数据:

Jakarta Commons Digester应该做你想做的事。

或者,我建议编写一个使用XPath从XML中检索元素的转换类。

我认为JiBX是最好的(JAXB,Castor,XMLBeans等),特别是因为我赞成通过注释映射文件。 不可否认,它有一个不错的学习曲线,但该网站有很多很好的例子。 你一定错过了教程 。

如果您只走一条路(XML – > POJO),您可以使用Digester 。

旁注:我更喜欢在注释上映射文件,因为注释:

  • 使代码混乱(特别是在使用多个产品的注释时)
  • 混合关注点(域层中的XML,数据库等)
  • 只能绑定到单个XML(或数据库,或Web服务等)表示