4

我正在尝试将 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 只保存最后一个事件。如果有一个元素包装了事件 (),那么我就会知道如何使用 XML 元素包装器来处理它。但由于没有包装器,我不知道该怎么做。有人有什么想法吗?

我猜 ObjectFactory 正在获取所有事件,但不断用最新的事件覆盖旧事件。需要有某种方法来告诉它保存每个单独的事件,而不是每次都写同一个事件,但我不知道如何实现。

4

1 回答 1

8

默认情况下,JAXB (JSR-222)实现将 a 表示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;

}

了解更多信息

于 2013-05-24T22:00:25.053 回答