JAXB
JAXB(Java Architecture for XML Binding簡稱JAXB)允許Java開發人員將Java類映射為XML表示方式。JAXB提供兩種主要特性:將一個Java對象序列化為XML,以及反向操作,將XML解析成Java對象。換句話說,JAXB允許以XML格式存儲和讀取數據,而不需要程序的類結構實現特定的讀取XML和保存XML的代碼。
當規格複雜且經常變化時JAXB特別有用。在這種情況下,經常修改XML模式定義以與Java定義保持一致很花費時間並且容易產生錯誤。
JAXB是Java EE平台的API之一,同時是Java Web服務開發包的一部分。JAXB也是Web服務互操作性技術的基礎之一. JAXB是J2SE1.6的一部分。
JAXB 1.0是在Java社群過程中作為JSR 31開發出來的。JAXB 2.0是作為JSR 222開發的。這兩個版本的參考實現可以從java.net下載。
使用
「xjc」工具可以用來將XML模式或其他類型模式文件(Java 1.6試驗性地支持RELAX NG,DTD以及WSDL)轉換為Java類。Java類使用javax.xml.bind.annotation包下的Java標註,例如@XmlRootElement和@XmlElement。XML列表序列表示為java.util.List類型的屬性,通過JAXBContext可以創建Marshallers(將Java對象轉換成XML)和Unmarshallers(將XML解析為Java對象)。
此外,JAXB包括了一個「schemagen」工具,能夠執行「xjc」的反向操作,通過一組標註的Java類創建一個XML模式。
缺省的數據類型綁定
下面的表格列出了JAXB中XML數據類型和Java數據類型的映射。
XML Schema類型 | Java數據類型 |
---|---|
xsd:string | java.lang.String |
xsd:positiveInteger | java.math.BigInteger |
xsd:int | int |
xsd:long | long |
xsd:short | short |
xsd:decimal | java.math.BigDecimal |
xsd:float | float |
xsd:double | double |
xsd:boolean | boolean |
xsd:byte | byte |
xsd:QName | javax.xml.namespace.QName |
xsd:dateTime | javax.xml.datatype.XMLGregorianCalendar |
xsd:base64Binary | byte[] |
xsd:hexBinary | byte[] |
xsd:unsignedInt | long |
xsd:unsignedShort | int |
xsd:unsignedByte | short |
xsd:time | javax.xml.datatype.XMLGregorianCalendar |
xsd:date | javax.xml.datatype.XMLGregorianCalendar |
xsd:g | javax.xml.datatype.XMLGregorianCalendar |
xsd:anySimpleType | java.lang.Object |
xsd:anySimpleType | java.lang.String |
xsd:duration | javax.xml.datatype.Duration |
xsd:NOTATION | javax.xml.namespace.QName |
參見
外部連結
- JAXB主頁,位於GlassFish項目。
- JAXB前主頁 (頁面存檔備份,存於網際網路檔案館)
- JSR 222 (頁面存檔備份,存於網際網路檔案館)(JAXB 2.0)
- JSR 31 (頁面存檔備份,存於網際網路檔案館)(JAXB 1.0)
- JAXB教程[永久失效連結],作者是Wolfgang Laun
- JaxMe – Apache軟件基金會的JAXB的開源實現
- EclipseLink MOXy (頁面存檔備份,存於網際網路檔案館) – Eclipse基金會JAXB和對象XML映射服務的開源實現
- Java EE 5教程中的JAXB章節 (頁面存檔備份,存於網際網路檔案館)
- 用JAXB2從對象模型生成XML文檔 (頁面存檔備份,存於網際網路檔案館)
- JAXB 2.0