1. 程式人生 > >JDK中JAXB相關的重要Annotation

JDK中JAXB相關的重要Annotation

@XmlType,將Java類或列舉型別對映到XML模式型別 @XmlAccessorType(XmlAccessType.FIELD) ,控制欄位或屬性的序列化。FIELD表示JAXB將自動繫結Java類中的每個非靜態的(static)、非瞬態的(由@XmlTransient標註)欄位到XML。其他值還有XmlAccessType.PROPERTY和XmlAccessType.NONE。

PROPERTY:所有set/get方法對將被對映為xml元素.除非被XmlTransient標註例外.

FIELD:所有物件屬性將被對映為xml元素。除非被XmlTransient標註例外.

PUBLIC_MEMBER每個publicget/set對方法或public field將被對映為xml元素。除非被XmlTransient標註例外.

NONE沒有fields property被對映,除非顯示指定具體fieldsproperty

@XmlTransient:指對應屬性不做xml對映。

@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。