简单的Java XML来POJO映射/绑定?(Simple Java Xml to POJO map

2019-09-02 20:04发布

我试图映射到一个XML文件,最简单的方法找出对一个普通的旧Java对象。

注:在我的例子中,XML并不完全与我的意图POJO匹配。

///////// THE XML
<?xml version="1.0" encoding="UTF-8"?>
<Animal>
  <standardName>
    <Name>Cat</Name>
  </standardName>
  <standardVersion>
    <VersionIdentifier>V02.00</VersionIdentifier>
  </standardVersion>
</Animal>


////// THE INTENDED POJO
class Animal
{
 private String name;
 private String versionIdentifier;
}

定期JAXB(有注解)将无法正常工作的JAXM元素名称标注不容许我specifiy嵌套元素。 (即standardName /名称)。

我看了JIBX但似乎过于复杂,并且提供了什么,我想要做的不完全的例子。

卡斯特罗似乎将能够做我想做的(使用了配置文件)的话,但我不知道是否有任何其他可能的解决方案。 (也许,让我跳过映射文件,只允许我指定在注释中的一切)。

谢谢

Answer 1:

这篇文章可以帮助你......它只需要你知道的XPath http://onjava.com/onjava/2007/09/07/schema-less-java-xml-data-binding-with-vtd-xml.html



Answer 2:

的EclipseLink JAXB(莫西)允许你这样做,你正在寻找的路径基于映射:

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

 @XmlPath("standardVersion/VersionIdentifier/text()");
 private String versionIdentifier; 
} 

欲了解更多信息,请参阅:

  • http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html
  • http://bdoughan.blogspot.com/2010/07/xpath-based-mapping.html
  • http://wiki.eclipse.org/EclipseLink/Examples/MOXy/GettingStarted/MOXyExtensions

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

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


Answer 3:

Jakarta Commons的沼气池应该做你想要什么。

另外,我建议写一个使用XPath来检索XML元素转换类。



Answer 4:

我认为JiBX的最好的一群(JAXB,蓖麻,XMLBeans的,等),特别是因为我喜欢在注释映射文件。 诚然,它有一个体面的学习曲线,但该网站有很多很好的例子。 你一定错过了教程 。

如果你只打算一个办法(XML - > POJO),你可以用沼气池 。

边评论:我更喜欢注解注释因为映射文件:

  • 杂乱的代码(使用几种产品的注释尤其是当)
  • 混合(在域层XML,数据库等)的关注
  • 只能绑定到单个XML(或数据库,或web服务等)表示


文章来源: Simple Java Xml to POJO mapping/binding?
标签: java xml jibx