gMa*_*ale 11 java xml binding jaxb unmarshalling
我认为这对于真正了解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>
Run Code Online (Sandbox Code Playgroud)
输出:
在解组这个例子之后,我最终得到一个Organization具有一个属性的对象:List<Employees> employees每个雇员只有firstName和lastName.
(注意:每个员工都是EmployeeNOT 类型Director/Manager/Staff.解组时子类信息会丢失.我们也不关心编组 - 我们只需要从XML创建对象)
这可以在没有MOXy这样的扩展的情况下完成吗?自定义bindings.xjb文件可以保存一天吗?
bdo*_*han 15
这对应于选择结构.您可以@XmlElements为此用例使用注释:
@XmlElements({
@XmlElement(name="director", type=Employee.class),
@XmlElement(name="manager", type=Employee.class)
})
List<Employee> getEmployees() {
return employees;
}
Run Code Online (Sandbox Code Playgroud)
如果您从XML模式开始,以下内容将有所帮助: