2011-11-01 110 views
2

對於我的罪,我正在與Airline OTA XML。它有詳細的元素如:詳細OTA XML jaxb註釋

<FlightInfo> 
    <Success /> 
    <DepartureAirport LocationCode="LHR" /> 
    <ArrivalAirport LocationCode="LAX" /> 
</FlightInfo> 

其中成功元件的存在意味着該響應是成功的,機場代碼被嵌入在作爲保持元件的屬性。

爲了保持我的理智,我寫Java代碼,我打算將它轉換成一個簡單的POJO是這樣的:

public class FlightInfo { 
    private boolean success; 
    private String departureAirport; 
    private String arrivalAirport; 
} 

使用JAXB,什麼是這個建議的方法 - 所有這些元素使用XmlJavaTypeAdapter ?

回答

1

備註:我是EclipseLink JAXB (MOXy)的領導和JAXB 2 (JSR-222)專家組的成員。

您可以使用@XmlPath擴展在莫西的departureAirportarrivalAirport領域:

@XmlPath("DepartureAirport/@LocationCode") 
    private String departureAirport; 

    @XmlPath("ArrivalAirport/@LocationCode") 
    private String arrivalAirport; 

而且你可以使用一個XmlAdapter代表booleansuccessSuccess元素的存在與否:

@XmlJavaTypeAdapter(SuccessAdapter.class) 
    private boolean success; 

FlightInfo

下面是你的FlightInfo類將會是什麼樣莫西和JAXB註釋:

import javax.xml.bind.annotation.*; 
import org.eclipse.persistence.oxm.annotations.*; 

@XmlRootElement(name="FlightInfo") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class FlightInfo { 

    @XmlJavaTypeAdapter(SuccessAdapter.class) 
    private boolean success; 

    @XmlPath("DepartureAirport/@LocationCode") 
    private String departureAirport; 

    @XmlPath("ArrivalAirport/@LocationCode") 
    private String arrivalAirport; 

} 

更多信息