Java JAXB马歇尔

Java JAXB马歇尔,java,xml,spring,jaxb,Java,Xml,Spring,Jaxb,我正在编写一个JAXB类来解析下面的xml。我总是为TrackingFolist获取空值,并且响应状态为有值,我不确定这段代码有什么问题,请您建议 @XmlRootElement(name = "CargoTrackingRespone") public class CargoTrackingRespone { private List<TrackingInfo> trackingInfoList; private ResponseStatus response

我正在编写一个JAXB类来解析下面的xml。我总是为TrackingFolist获取空值,并且响应状态为有值,我不确定这段代码有什么问题,请您建议

@XmlRootElement(name = "CargoTrackingRespone")
   public class CargoTrackingRespone {

   private List<TrackingInfo> trackingInfoList;

   private ResponseStatus responseStatus;

   @XmlElements({@XmlElement(name = "TrackingInfo", type = TrackingInfo.class)} )
   @XmlElementWrapper(name = "TrackingInfoList" )
   public List<TrackingInfo> getTrackingInfoList() {
    return trackingInfoList;
  }

  public void setTrackingInfoList(List<TrackingInfo> trackingInfoList) {
    this.trackingInfoList = trackingInfoList;
  }

  @XmlElement(name = "Status")
  public ResponseStatus getResponseStatus() {
    return responseStatus;
  }

  public void setResponseStatus(ResponseStatus responseStatus) {
    this.responseStatus = responseStatus;
  }

}

可以按以下方式注释属性以匹配XML:

@XmlElement(name = "TrackingInfo")
public List<TrackingInfo> getTrackingInfoList() { 
@xmlement(name=“TrackingInfo”)
公共列表GetTrackingFolist(){
了解更多信息


我认为您的TrackingInfo元素是用TrackingFolist包装的。因此您的xml应该是这样的

<?xml version="1.0" encoding="UTF-8"?>
<CargoTrackingRespone>
  <TrackingInfoList>    
      <TrackingInfo>
        <TrackID>12345</TrackID>
        <TrackStatus>
          <Code>ERROR</Code>
          <Description>No tracking information found</Description>
          <StatusUpdateDateTime>2014-01-14T14:51:11.551-06:00</StatusUpdateDateTime>
        </TrackStatus>
      </TrackingInfo>
  <TrackingInfoList>
  <Status>
    <Code>ERROR</Code>
    <Description>No shipment information available</Description>
    <ReasonCode>No Shipment.</ReasonCode>
  </Status>
</CargoTrackingRespone>
我在测试中创建了一个类,并封送xsd和生成的示例xml文件,发现您的xml和我从测试中获得的xml之间的差异具有这种差异

<?xml version="1.0" encoding="UTF-8"?>
<CargoTrackingRespone>
  <TrackingInfoList>    
      <TrackingInfo>
        <TrackID>12345</TrackID>
        <TrackStatus>
          <Code>ERROR</Code>
          <Description>No tracking information found</Description>
          <StatusUpdateDateTime>2014-01-14T14:51:11.551-06:00</StatusUpdateDateTime>
        </TrackStatus>
      </TrackingInfo>
  <TrackingInfoList>
  <Status>
    <Code>ERROR</Code>
    <Description>No shipment information available</Description>
    <ReasonCode>No Shipment.</ReasonCode>
  </Status>
</CargoTrackingRespone>