JAXB(Java Architecture for XML Binding) 是一個業界的標準,是一項能夠根據XML Schema產生Java類的技術。該過程當中,JAXB也提供了將XML實例文檔反向生成Java對象樹的方法,並能將Java對象樹的內容從新寫到XML實例文檔。從另外一方面來說,JAXB提供了快速而簡便的方法將XML模式綁定到Java表示,從而使得Java開發者在Java應用程序中能方便地結合XML數據和處理函數。數組
Java SE中的JAXBapp
JAXB 2.0是JDK 1.6的組成部分。JAXB 2.2.3是JDK 1.7的組成部分。函數
JDK中JAXB相關的重要Class和Interface:
JAXBContext類,是應用的入口,用於管理XML/Java綁定信息。
Marshaller接口,將Java對象序列化爲XML數據。
Unmarshaller接口,將XML數據反序列化爲Java對象。
JDK中JAXB相關的重要Annotation:
@XmlType,將Java類或枚舉類型映射到XML模式類型
@XmlAccessorType(XmlAccessType.FIELD) ,控制字段或屬性的序列化。FIELD表示JAXB將自動綁定Java類中的每一個非靜態的(static)、非瞬態的(由@XmlTransient標註)字段到XML。其餘值還有XmlAccessType.PROPERTY和XmlAccessType.NONE。
@XmlAccessorOrder,控制JAXB 綁定類中屬性和字段的排序。
@XmlJavaTypeAdapter,使用定製的適配器(即擴展抽象類XmlAdapter並覆蓋marshal()和unmarshal()方法),以序列化Java類爲XML。
@XmlElementWrapper ,對於數組或集合(即包含多個元素的成員變量),生成一個包裝該數組或集合的XML元素(稱爲包裝器)。
@XmlRootElement,將Java類或枚舉類型映射到XML元素。
@XmlElement,將Java類的一個屬性映射到與屬性同名的一個XML元素。
@XmlAttribute,將Java類的一個屬性映射到與屬性同名的一個XML屬性。
其餘:
對於要序列化(marshal)爲XML的Java類,毫不能把成員變量聲明爲public,不然運行將拋出異常 com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException。
對於JAXB相關的重要Annotation的聲明,如@Xml.....,能夠放在成員變量的setter()
或getter()方法上,二者中任選其一便可,但決不能放在成員變量上,不然運行將拋出異常com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException。