我认为对于真正理解JAXB绑定文件的人来说,这将是很容易的...
基本问题
如何配置JAXB将多个元素反编组成同一个类?
注意:我想避免在我的项目中添加另一个依赖项(例如MOXy)。理想情况下,可以通过注释或自定义绑定文件来完成此操作。
背景
我有一个XML文档,其中包含许多相同元素的变化--每个元素都具有完全相同的属性。在下面的示例中,我只关心“Employees”,但XML指定了“directors,managers和staff”。对于我们的目的,这些都是同一父类的子类,我们只需要使用父类型(Employee),并且我们的对象模型没有或不需要子类实例。
我希望JAXB将director、manager或staff
元素的任何实例绑定到对象中。
示例
输入:
<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
,每个员工仅有firstName和lastName两个属性。
(注意:每个员工都将是类型为Employee
而不是Director/Manager/Staff
。子类信息将在解组时丢失。我们也不关心重新组合--我们只需要从XML创建对象)
这能不能在不使用MOXy等扩展的情况下完成?自定义的bindings.xjb文件可以拯救一下吗?