我最近使用 xjc
工具创建了一系列基于 XSD 的对象。我遇到的问题是我从如下所示的源收到 XML:
<foos>
</foos>
<foo>
</foo>
<foo_detail_1>
</foo_detail_1>
<foo_detail_2>
</foo_detail_2>
这并不理想。我的问题是,当我解码 XML 时,如何创建每个单独的对象?就像这样:
Foo foo = (Foo)um.unmarshal("myXML.xml");
Foo_Detail_1 fd = (Foo_Detail_1)um.unmarshal("myXML.xml");
或者这更多的是利用 XPath 填充这些属性的练习,如果是的话,正确的方法是什么?
最佳答案
选项 #1 - 将 JAXB 与 StAX 结合使用
您可以使用 StAX XMLStreamReader
解析 XML,然后前进到 foos
元素并解码 Foos
的实例。然后将 XMLStreamReader
前进到 foo
元素并解码 Foo
的实例,依此类推。
了解更多信息
选项 #2 - 创建包装对象
您可以创建一个与根元素相对应的包装对象,然后解码该对象的实例并从中获取各个对象。
关于java - JAXB 从 XML 检索单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16837219/