【JAXB】marshaller unmarshaller解析xml和讀取xml

一、JAXB簡介及主要類

JAXB(Java Architecture for XML Binding) 是一個業界的標準,是一項可以根據XML Schema產生Java類的技術。該過程中,JAXB也提供了將XML實例文檔反向生成Java對象樹的方法。

marshaller:將bean轉化爲xml

unmarshaller:將xml轉化爲bean

二、JAXB的相關注解詳解(使用於bean中):

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


三、注意:
1.對於要序列化(marshal)爲XML的Java類,絕不能把成員變量聲明爲public,否則運行將拋出異常com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException。
2.對於JAXB相關的重要Annotation的聲明,如@Xml.....,可以放在成員變量的setter()或getter()方法上,兩者中任選其一即可,但決不能放在成員變量上,否則運行將拋出異常com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException。

實例詳見資源下載中的“JAXBUtil使用JAXB進行xml和bean互轉”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章