我正在编写一个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>
答案 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和我从测试中获得的内容之间存在差异。