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服務開發包英語Java Web Services Development Pack的一部分。JAXB也是Web服務互操作性技術英語Metro WSIT的基礎之一. JAXB是J2SE1.6的一部分。

JAXB 1.0是在Java社群過程中作為JSR 31開發出來的。JAXB 2.0是作為JSR 222開發的。這兩個版本的參考實現可以從java.net下載。

使用

「xjc」工具可以用來將XML模式或其他類型模式文件(Java 1.6試驗性地支持RELAX NGDTD以及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

參見

外部連結