JAXB编组

时间:2014-01-15 02:33:00

标签: java xml spring jaxb

我正在编写一个JAXB类来解析xml以下。我总是为跟踪信息列表获取空值并且响应状态有价值,我不确定这段代码有什么问题,你能告诉我吗?

@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文件:

<?xml version="1.0" encoding="UTF-8"?>
<CargoTrackingRespone>
  <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>
  <Status>
    <Code>ERROR</Code>
    <Description>No shipment information available</Description>
    <ReasonCode>No Shipment.</ReasonCode>
  </Status>
</CargoTrackingRespone>

2 个答案:

答案 0 :(得分:1)

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

@XmlElement(name = "TrackingInfo")
public List<TrackingInfo> getTrackingInfoList() { 

了解更多信息

答案 1 :(得分:0)

我认为您的TrackingInfo元素包含在TrackingInfoList中。所以你的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和我从测试中获得的内容之间存在差异。