簡體   English   中英

使用JAXB將同名的多個XML元素解組到列表中

[英]Unmarshalling multiple XML elements of the same name into a list using JAXB

我正在嘗試將XML消息解組為Java對象。 我有大部分工作,但有一個問題我堅持下去。 我有一個如下所示的架構:

<DeliveryDetails>
  <Name>Ed</Name>
  <Location>Toronto</Location>
  <Event>
    <Date>2013-05-06</Date>
    <Time>12:12</Time>
    <Description>MARKHAM</Description>
  </Event>
  <Event>
    <Date>2013-05-07</Date>
    <Time>05:12</Time>
    <Description>MARKHAM</Description>
  </Event>
  <Event>
    <Date>2013-05-08</Date>
    <Time>15:12</Time>
    <Description>MARKHAM</Description>
  </Event>
</DeliveryDetails>

現在,問題是JAXB ObjectFactory只保存最后一個事件。 如果有一個元素包裝events(),那么我將知道如何使用XML Element Wrapper處理它。 但由於沒有包裝,我不知道該怎么辦。 有人有什么想法嗎?

我猜測ObjectFactory正在獲取所有事件,但不斷用最新的事件覆蓋舊事件。 需要有一些方法來告訴它保存每個單獨的事件,而不是每次只寫同一個事件,但我不知道如何實現這一點。

默認情況下, JAXB(JSR-222)實現將List表示為具有相同名稱的多個元素。 只要您擁有以下內容,您就可以了:

@XmlRootElement(name="DeliveryDetails")
@XmlAccessorType(XmlAccessType.FIELD)
public class DeliveryDetails {

    @XmlElement(name="Name")
    private String name;

    @XmlElement(name="Location")
    private String location;

    @XmlElement(name="Event")
    private List<Event> events;

}

欲獲得更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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