我试图映射到一个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但似乎过于复杂,并且提供了什么,我想要做的不完全的例子。
卡斯特罗似乎将能够做我想做的(使用了配置文件)的话,但我不知道是否有任何其他可能的解决方案。 (也许,让我跳过映射文件,只允许我指定在注释中的一切)。
谢谢
这篇文章可以帮助你......它只需要你知道的XPath http://onjava.com/onjava/2007/09/07/schema-less-java-xml-data-binding-with-vtd-xml.html
的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
Jakarta Commons的沼气池应该做你想要什么。
另外,我建议写一个使用XPath来检索XML元素转换类。
我认为JiBX的最好的一群(JAXB,蓖麻,XMLBeans的,等),特别是因为我喜欢在注释映射文件。 诚然,它有一个体面的学习曲线,但该网站有很多很好的例子。 你一定错过了教程 。
如果你只打算一个办法(XML - > POJO),你可以用沼气池 。
边评论:我更喜欢注解注释因为映射文件:
- 杂乱的代码(使用几种产品的注释尤其是当)
- 混合(在域层XML,数据库等)的关注
- 只能绑定到单个XML(或数据库,或web服务等)表示