Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JAXB将同名的多个XML元素解组到列表中_Java_Xml_Jaxb - Fatal编程技术网

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

Java 使用JAXB将同名的多个XML元素解组到列表中,java,xml,jaxb,Java,Xml,Jaxb,我试图将XML消息解组为Java对象。我有它的大部分工作,但有一个问题,我卡住了。我有一个如下所示的模式: <DeliveryDetails> <Name>Ed</Name> <Location>Toronto</Location> <Event> <Date>2013-05-06</Date> <Time>12:12</Time> <

我试图将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>

预计起飞时间
多伦多
2013-05-06
12:12
马卡姆
2013-05-07
05:12
马卡姆
2013-05-08
15:12
马卡姆
现在的问题是JAXB ObjectFactory只保存最后一个事件。如果有一个元素包装events(),那么我就知道如何使用XML元素包装来处理它。但是因为没有包装纸,我不知道该怎么办。有人有什么想法吗

我猜ObjectFactory会获取所有事件,但会不断用最新的事件覆盖旧的事件。需要有某种方法告诉它保存每个单独的事件,而不是每次只写同一个事件,但我不知道如何做到这一点。

默认情况下,一个实现将把一个
列表
表示为具有相同名称的多个元素。只要你有以下类似的东西,你就会很好:

@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;

}
@XmlRootElement(name=“DeliveryDetails”)
@XmlAccessorType(XmlAccessType.FIELD)
公共类交付详细信息{
@xmlement(name=“name”)
私有字符串名称;
@xmlement(name=“Location”)
私有字符串位置;
@xmlement(name=“事件”)
私人列表活动;
}
了解更多信息


事件
是否始终为3?还是一个任意的数字(包括零)?任意的,包括零。哇,那么简单啊!工作得很有魅力。我试着做一些类似的事情,但方式更加复杂和丑陋。谢谢