JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
Java SE中的JAXB
JAXB 2.0是JDK 1.6的组成部分。JAXB 2.2.3是JDK 1.7的组成部分。
JDK中JAXB相关的重要Class和Interface:
JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。
Marshaller接口,将Java对象序列化为XML数据。
Unmarshaller接口,将XML数据反序列化为Java对象。
JDK中JAXB相关的重要Annotation:
@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属性。
其他:
对于要序列化(marshal)为XML的Java类,绝不能把成员变量声明为public,否则运行将抛出异常com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException。
对于JAXB相关的重要Annotation的声明,如@Xml.....,可以放在成员变量的setter()或getter()方法上,两者中任选其一即可,但决不能放在成员变量上,否则运行将抛出异常com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException。
编辑本段使用
“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介绍.ppt"可能包含更直观的演示,通过幻灯片的形式展示JAXB的基本概念、工作原理以及实际应用案例。PPT通常会用图表和示例代码来帮助理解,对于初学者来说是非常有益的学习资源。 "JAXBDemos"这部分很可能是...
- `overview-summary.html`:概述摘要,简要介绍JAXB 2.0的关键特性。 这些文档可以帮助开发者深入理解JAXB 2.0的工作原理,学习如何有效地使用它的各种功能,以及如何解决可能出现的问题。通过查阅这些文档,你...
- **版本**:本文档介绍的是 JAXB 2.2.6 版本的相关内容。 - **功能**:通过 JAXB,可以轻松地将 Java 对象序列化为 XML 文档,或将 XML 文档反序列化为 Java 对象。 - **应用场景**:广泛应用于需要处理 XML 数据的...
本文将详细介绍如何利用JAXB来从一个XML模式(Schema)生成Java类,并最终构建出符合该模式的XML文档。 #### 二、准备工作 为了使用JAXB从XML模式中生成Java类,首先需要确保以下工具和库已经正确配置: 1. **...
本文将详细介绍Java XML绑定技术的基本概念,并重点介绍三种常用的实现框架:JAXB、XMLBeans和Castor。 #### 二、Java XML绑定技术概述 Java XML绑定技术(简称XML Binding)是一种能够自动将XML文档映射到Java...
本教程将详细介绍JAXB如何实现XML到Java对象以及Java对象到XML的转换。 ### JAXB概述 JAXB提供了一种自动化的机制,将XML Schema(XSD)映射到Java类,反之亦然。这允许开发者在Java应用中存储和序列化数据为XML...
下面将详细介绍这些知识点。 首先,**JAX-WS** 是一种用于构建SOAP(Simple Object Access Protocol)Web服务的标准API,它使得Java开发者可以方便地创建服务端点(SEI,Service Endpoint Interface)并将其暴露为...
本篇文章将详细介绍JAXB2.0在编组和解组过程中的实现方式。 **1. JAXB2.0简介** JAXB2.0是JAXB规范的第二个主要版本,引入了许多新特性,如注解支持、XML Schema绑定等。相比于JAXB1.0,2.0版本提供了更加简洁和...
本文将详细介绍这些技术以及与之相关的Geronimo JAXWS 2.2规范。 **JAX-WS 2.1** JAX-WS是Java SE和Java EE环境中用于处理SOAP消息和创建Web服务的标准API。它简化了Web服务的开发,通过提供一种声明式的方式来定义...
【JAVA6新特性:JAXB简介】 Java Architecture for XML Binding(JAXB)是Java平台上的一个标准技术,它提供了一种方便的对象与XML之间的映射机制。在Java 6中,JAXB已经成为Java Standard Edition(Java SE)的一...
在Java企业级应用开发中,数据交换格式的选择至关重要。XML作为一种结构化的标记语言,因其自描述性和...本文详细介绍了JAXB的工作原理、使用方法和最佳实践,希望能够帮助开发者更有效地利用JAXB进行企业级应用开发。
Java平台下的多种工具和技术,其中JAXB(Java Architecture for XML Binding)就是一种用于将Java类绑定到XML表示的方法,而XJC是JAXB提供的命令行工具,用于根据XML Schema生成Java类。 当我们在开发涉及XML与Java...
介绍 这个插件受到了高度启发,并共享了许多通用代码。 这是一个 XJC 插件,用于根据 xs:element 的固定属性在 XJC 生成的类中设置固定值。 记录固定属性。 请注意,JAXB 本地处理 xs:attribute 的固定值,因此此...
中文乱码是每个程序员都会遇到的问题,本篇文章主要介绍了谈谈为JAXB和response设置编码,解决wechat4j中文乱码的问题,具有一定的参考价值,有兴趣的可以了解一下。
这一部分主要介绍了构成Nachos运行环境的基础硬件组件及其管理机制。 ##### 2.1 Machine Components(机器组件) - **CPU**: Nachos基于MIPS架构设计,该架构的特点是简单、易于理解和实现。 - **Memory**: 包括...
在描述中提到的链接是一个CSDN博客文章,详细介绍了**XSD Schema** 的应用场景,这可能是压缩包中项目的灵感来源或者参考材料。如果你正在学习或使用JAXB处理XML,这篇博客可能会提供一些实用的指导。 总的来说,这...