给出了XML示例:
<fooRoot>
<bar>
<lol>LOLOLOLOL</lol>
</bar>
<noob>
<boon>
<thisIsIt></thisIsIt>
</boon>
</noob>
</fooRoot>应该映射到:
class MyFoo {
String lol;
String thisIsIt;
Object somethingUnrelated;
}制约因素:
我的梦想解决方案应该是:
@XmlMapped
class MyFoo {
@XmlElement("/fooRoot/bar/lol")
String lol;
@XmlElement("/noob/boon/thisIsIt")
String thisIsIt;
@XmlIgnore
Object somethingUnrelated;
}有类似的东西存在吗?我所发现的要么需要严格的1:1映射(例如JMX、JAXB),要么需要对所有字段(例如SAX、Commons )进行手动迭代。
JiBX绑定定义最接近我想要的东西。然而,该工具适用于马歇尔/unmarshall完成Java对象的层次结构。我只想在运行时将XML文档的部分提取到现有的Java中。
发布于 2011-09-27 14:22:43
备注:,我是EclipseLink JAXB (MOXy)的负责人,也是JAXB 2 (JSR-222)专家组的成员。
您可以使用MOXy来完成这一任务:
@XmlRootElement(name="fooRoot")
class MyFoo {
@XmlPath("bar/lol/text()")
String lol;
@XmlElement("noob/boon/thisIsIt/text()")
String thisIsIt;
@XmlTransient
Object somethingUnrelated;
}获取更多信息
发布于 2011-09-27 13:48:02
试试XStream。太简单了。希望能帮上忙!我现在没有时间做一个完整的例子:)
发布于 2011-09-27 14:10:46
一个选项可以是编写一个自定义注释,该注释将XPath表达式作为输入并执行绑定。
https://stackoverflow.com/questions/7570174
复制相似问题