[英]Map XML to Java with multiple option for tag names
我需要解析一個XML文件,然后將其映射到Java對象。 到目前為止,我使用帶注釋的POJO來實現:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"title", "id", "eventList"})
@XmlRootElement(name = "MyClass")
public class MyClass {
@XmlElement(name = "Title", required = true)
protected String title;
@XmlElement(name = "Id", required = false)
protected String id;
@XmlElement(name = "EventList", required = true)
protected EventList eventList;
}
然后用JAXB解組它:
MyClass myObj = (MyClass) unmarshaller.unmarshal(new StreamSource(fis))
問題 :有時,我的客戶發送的標簽名稱稍有不同(例如, Eventlist
而不是EventList
)
是否有允許標簽同時使用兩個名稱的選項? 到目前為止,我通過在POJO中提供2個屬性來解決此問題:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"title", "id", "eventList"})
@XmlRootElement(name = "MyClass")
public class MyClass {
@XmlElement(name = "Title", required = true)
protected String title;
@XmlElement(name = "Id", required = false)
protected String id;
@XmlElement(name = "EventList", required = false)
protected EventList eventList;
@XmlElement(name = "Eventlist", required = false)
protected EventList eventlist;
}
這很難維護,並且禁止我使用“ required”屬性。 您有更好的解決方案嗎?
我不確定是否可以添加多個名稱,但是您可以執行以下操作:
將字段設為私有,並為其添加getter和setter。 您可以為eventlist-field創建2個getter和setter並用不同的名稱注釋它們。 如我所見,由於不需要此字段,因此不會有問題。
雖然..正如我現在看到的,問題實際上已經解決了。 參見此處: JAXB:同一元素的多個名稱的XML編組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.