如何使用 JAXB 绑定多个非唯一元素

How can I use JAXB to bind mulitple non-unique elements

我在使用 JAXB 解析 XML 时遇到了这个问题。这是有问题的 XML 的简化布局:

<message>
  <header>
    <network>NET</network>
    <sendTime>0722</sendTime>
  </header>
  <generalInformation>
    <senderReference>1234</senderReference>
    <linkage>
      <externalReference>extRef</externalReference>
    </linkage>
    <linkage>
      <internalReference>intRef</internalReference>
    </linkage>
    <linkage>
      <systemReference>sysRef</externalReference>
    </linkage>
  </generalInformation>
</message>

我遇到的问题是这些引用是在不唯一的链接标签下发送的,也没有像“链接”这样的根,这让我可以轻松地将它包装在列表中在 Java 中,因为 generalInformation 标签中还有其他标签。到目前为止,这是我的设置方式:

@XmlRootElement(name="message")
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Message {
  private Header header;
  private GeneralInformation generalInformation;
}

@XmlRootElement(name="header")
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Header {
  private String network;
  private String sendTime;
}

@XmlRootElement(name="generalInformation")
@NoArgsConstructor
@AllArgsConstructor
@Data
public class GeneralInformation {
  private String senderReference;
  //How to create for linkages??
}

所以我的问题是,如何配置 GeneralInformation class 来处理这些多重链接?目前我最关心的是从 XML 解组到 Java。

定义为List即可,例如:

private List<Linkage> linkage;

并定义 Linkage class 有单个 String 属性:

@XmlRootElement(name="linkage")
...
public class Linkage {
  private String systemReference;
}
@XmlRootElement(name="generalInformation")
@NoArgsConstructor
@AllArgsConstructor
@Data
public class GeneralInformation {
  private String senderReference;
  private List<Linkage>;
}

@XmlRootElement(name="linkage")
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Linkage {
  private String externalReference;
  private String internalReference;
  private String systemReference;
}