【发布时间】:2012-06-23 02:23:02
【问题描述】:
我认为这对于真正了解 JAXB 绑定文件的人来说会很容易......
基本问题
如何配置 JAXB 以将多个元素解组到同一个类中?
注意:我想避免向我的项目添加另一个依赖项(如 MOXy)。理想情况下,这可以通过注释或自定义绑定文件来完成。
背景
我有一个 XML 文档,其中包含相同元素的许多变体——每个变体都具有完全相同的属性。使用下面的示例,我只关心“员工”,但 XML 指定了“董事、经理和员工”。出于我们的目的,这些都是同一个父类的所有子类,我们只需要使用父类型 (Employee),我们的对象模型没有或不需要子类的实例。
我希望 JAXB 将 director, manager, or staff 元素的任何实例绑定到 Employee 对象中。
示例
输入:
<organization>
<director>
<fname>Dan</fname>
<lname>Schman</lname>
</director>
<manager>
<fname>Joe</fname>
<lname>Schmo</lname>
</manager>
<staff>
<fname>Ron</fname>
<lname>Schwan</lname>
</staff>
<staff>
<fname>Jim</fname>
<lname>Schwim</lname>
</staff>
<staff>
<fname>Jon</fname>
<lname>Schwon</lname>
</staff>
</organization>
输出:
解组此示例后,我将得到一个具有一个属性的 Organization 对象:List<Employees> employees,其中每个员工只有一个名字和姓氏。
(注意:每个员工的类型都是Employee而不是Director/Manager/Staff。解组时子类信息会丢失。我们也不关心编组返回——我们只需要从XML创建对象)
没有像 MOXy 这样的扩展可以做到这一点吗?自定义 bindings.xjb 文件可以节省时间吗?
【问题讨论】:
-
希望@BlaiseDoughan 会看到您的问题,因为他最近一直活跃在这个网站上,并且他和任何人一样了解他的 JAXB。 His blog 值得一读。
-
那太好了。如果是这样的话……我得到了各种各样的支持和代表点,上面写着他的名字! ;)
标签: java xml binding jaxb unmarshalling