@XmlRootElement(name = "SearchFlightRQ")
@XmlAccessorType(XmlAccessType.NONE)
@Data
public class SearchFlightRQ {
@XmlElement(name = "Dep")
private String Dep;
@XmlElement(name = "Arr")
private String Arr;
@XmlElement(name = "DepDate")
private String DepDate;
@XmlElement(name = "Extensions")
private String Extensions;
}
这种实体类里的对象 不包含List集合,使用JAXB 实体类和XML相互转换没有问题.
import java.io.Serializable;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "FlightInformationSummary ")
@XmlAccessorType(XmlAccessType.NONE)
public class FlightInformationSummary{
@XmlAttribute(name="cabin") //FlightInformationSummary这个标签的属性值
private String cabin;
@XmlElement(name = "Dep")
private String Dep;
@XmlElement(name = "Arr")
private String Arr;
@XmlElement(name = "DepDate")
private String DepDate;
private List<Flight> Flight;
像这种实体类里有List集合的不能直接在对象上加注解,否则解析出来的XML数据格式有问题 .必须在集合对象的get方法上加注解.
@XmlRootElement(name = "FlightInformationSummary ")
@XmlAccessorType(XmlAccessType.NONE)
public class FlightInformationSummary implements Serializable {
@XmlElement(name = "Dep")
private String Dep;
@XmlElement(name = "Arr")
private String Arr;
@XmlElement(name = "DepDate")
private String DepDate;
private List<Flight> Flight;
public String getDep() {
return Dep;
}
public void setDep(String dep) {
Dep = dep;
}
public String getArr() {
return Arr;
}
public void setArr(String arr) {
Arr = arr;
}
public String getDepDate() {
return DepDate;
}
public void setDepDate(String depDate) {
DepDate = depDate;
}
//需要在这个上加上注解
@XmlElementWrapper(name = "FlightInformation")//外层名
@XmlElement(name = "Flight")//本层名
public List<Flight> getFlight() {
return Flight;
}
public void setFlight(List<Flight> flight) {
Flight = flight;
}
}
由于不熟悉JAXB的使用,浪费了我好多时间. 正好有空记录一下,方便以后自己查看回忆.