我正在试图找出将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元素名称注释不允许我指定嵌套元素。 (即标准名称/名称)。
我看过Jibx,但看起来过于复杂,并没有为我想做的事情提供完整的例子。
卡斯特罗似乎能够做我想做的事情(使用映射文件),但我想知道是否还有其他可能的解决方案。 (可能这会让我跳过映射文件,只允许我在注释中指定所有内容)。
由于
答案 0 :(得分:4)
EclipseLink JAXB (MOXy)允许您执行您要查找的基于路径的映射:
@XmlRootElement
class Animal
{
@XmlPath("standardName/Name/text()")
private String name;
@XmlPath("standardVersion/VersionIdentifier/text()");
private String versionIdentifier;
}
有关详细信息,请参阅:
EclipseLink还允许使用外部配置文件指定元数据:
答案 1 :(得分:3)
这篇文章可能会对你有所帮助......它只需要你知道xpath http://onjava.com/onjava/2007/09/07/schema-less-java-xml-data-binding-with-vtd-xml.html
答案 2 :(得分:3)
Jakarta Commons Digester应该做你想做的事。
或者,我建议编写一个使用XPath从XML中检索元素的转换类。
答案 3 :(得分:2)