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服务开发包(JWSDP)的一部分。JAXB也是Web服务互操作性技术(WSIT)的基础之一. 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 |
参见
- XML数据绑定
- XMLBeans–与JAXB类似的技术,来自Apache软件基金会
- TopLink軟體–对象到关系和对象到XML的映射产品,来自Oracle公司,支持JAXB 1.0
外部链接
- 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