如何通过XPath将XML映射到Java对象?
给出XML示例:如何通过XPath将XML映射到Java对象?,java,xml,jakarta-ee,xpath,Java,Xml,Jakarta Ee,Xpath,给出XML示例: <fooRoot> <bar> <lol>LOLOLOLOL</lol> </bar> <noob> <boon> <thisIsIt></thisIsIt> </boon> </noob> </fooRoot> 限制条件: 不应转换XML,它是作为已解析的org.w3c.dom.
<fooRoot>
<bar>
<lol>LOLOLOLOL</lol>
</bar>
<noob>
<boon>
<thisIsIt></thisIsIt>
</boon>
</noob>
</fooRoot>
限制条件:
- 不应转换XML,它是作为已解析的org.w3c.dom.Document对象提供的
- 类不会也不会将1:1映射到XML
- 我只对将XML的特定路径映射到对象的特定字段感兴趣
@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)
到离我最近的地方来。然而,该工具是对Java对象的完整层次结构进行marshall/unmarshall处理的工具。我只想在运行时将XML文档的一部分提取到现有的JavaBean中。试试看。非常简单。希望有帮助!我现在没有时间讲完整的示例:)一个选项是编写一个自定义注释,该注释将XPath表达式作为输入并进行绑定 注意:我是领导和专家组成员 可以使用MOXy执行此操作:
@XmlRootElement(name="fooRoot")
class MyFoo {
@XmlPath("bar/lol/text()")
String lol;
@XmlElement("noob/boon/thisIsIt/text()")
String thisIsIt;
@XmlTransient
Object somethingUnrelated;
}
了解更多信息
@XmlRootElement(name="fooRoot")
class MyFoo {
@XmlPath("bar/lol/text()")
String lol;
@XmlElement("noob/boon/thisIsIt/text()")
String thisIsIt;
@XmlTransient
Object somethingUnrelated;
}