给出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 Digester。)
JiBX binding definitions离我最近的东西来了。但是,此工具可用于编组/解组Java对象的完整层次结构。我只想在运行时将XML文档的一部分提取到现有的Java bean中。
答案 0 :(得分:5)
注意:我是 EclipseLink JAXB (MOXy) 负责人,也是 JAXB 2 (JSR-222) 专家组的成员。< / p>
您可以使用MOXy执行此操作:
@XmlRootElement(name="fooRoot")
class MyFoo {
@XmlPath("bar/lol/text()")
String lol;
@XmlElement("noob/boon/thisIsIt/text()")
String thisIsIt;
@XmlTransient
Object somethingUnrelated;
}
了解更多信息
答案 1 :(得分:1)
试试XStream。这非常容易。希望能帮助到你!我现在没时间找一个完整的例子:)
答案 2 :(得分:1)
一个选项可以是编写一个自定义注释,它将XPath表达式作为输入并进行绑定。