簡體   English   中英

使用標記名稱的多個選項將XML映射到Java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM