2011-11-01 237 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; 

} 

更多信息