[英]JAXB: unmarshalling xml with multiple names for the same element
我認為這對於真正理解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
,其中每個雇員只有firstName和lastName。
(注意:每個員工都是Employee
NOT Director/Manager/Staff
。在解組時子類信息會丟失。我們也不關心編組 - 我們只需要從XML創建對象)
這可以在沒有MOXy這樣的擴展的情況下完成嗎? 自定義bindings.xjb文件可以保存一天嗎?
這對應於選擇結構。 您可以為此用例使用@XmlElements
批注:
@XmlElements({
@XmlElement(name="director", type=Employee.class),
@XmlElement(name="manager", type=Employee.class)
})
List<Employee> getEmployees() {
return employees;
}
如果您從XML模式開始,以下內容將有所幫助:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.