JAXB——Java Architecture for XML Binding,是一項可以根據XML Schema産生Java類的技術。JAXB提供将XML執行個體文檔反向生成Java對象樹的方法,也能将Java對象樹的内容重新寫到XML執行個體文檔。
(1)JAXBContext。 JAXBContext類提供到 JAXB API 的用戶端入口點。它提供了管理實作 JAXB 綁定架構操作所需的 XML/Java 綁定資訊的抽象,這些操作包括:解組(Unmarshaller )、編組(Marshaller)和驗證(Validator)。通常使用<code>JAXBContext.newInstance(XXX.class)</code> 來擷取JAXBContext執行個體(Student是我定義的一個Entity)。
(2)Unmarshaller。 Unmarshaller 是一個Interface,它管理将 XML 資料反序列化為新建立的 Java 内容樹的過程,并可在解組時有選擇地驗證 XML 資料。它針對如File,InputStream,URL,StringBuffer等各種不同的輸入種類,提供各種重載的 unmarshal 方法。unmarshal 方法從不傳回 null。如果unmarshal無法将 XML 内容的根解組到 JAXB 映射對象,則抛出 JAXBException。
(3)Marshaller。<code>Marshaller</code>使用戶端應用程式能夠将 Java 内容樹轉換回 XML 資料。它提供了各種重載的marshal方法。預設情況下,在将 XML 資料生成到 java.io.OutputStream 或 java.io.Writer 中時,Marshaller 将使用 UTF-8 編碼。
(1)@XmlRootElement,将Java類或枚舉類型映射到XML元素;
(2)@XmlElement,将Java類的一個屬性映射到與屬性同名的一個XML元素;
(3)@XmlAttribute,将Java類的一個屬性映射到與屬性同名的一個XML屬性;
注意事項:
(1)對于要序列化(marshal)為XML的Java類,絕不能把成員變量聲明為public,否則運作将抛出異常
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException
(2)注解不能直接放在成員變量上,可以放在成員變量的getter或setter方法上,任選其一,否則也會抛出IllegalAnnotationsException異常
@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屬性。
本文轉自快樂就好部落格園部落格,原文連結:http://www.cnblogs.com/happyday56/p/4483088.html,如需轉載請自行聯系原作者