使用JAXB将同名的多个XML元素解组到列表中

UpA*_*ght 4 java xml 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>
Run Code Online (Sandbox Code Playgroud)

现在,问题是JAXB ObjectFactory只保存最后一个事件.如果有一个元素包装events(),那么我将知道如何使用XML Element Wrapper处理它.但由于没有包装,我不知道该怎么办.有人有什么想法吗?

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

bdo*_*han 7

默认情况下,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;

}
Run Code Online (Sandbox Code Playgroud)

欲获得更多信息