什么是JAXB?
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。在JAX-WS(Java的WebService规范之一)中,JAXB可以实现对象和XML之间相互转换。Unmarshaller类管理将XML数据反序列化为新创建的Java内容树的进程,并可在解组时有选择的验证XML数据。Marshaller类负责管理将Java内容树序列化回XML数据的过程。
在JDK1.6时,JAXB 2.0是JDK 1.6的组成部分。JAXB 2.2.3是JDK 1.7的组成部分。
JDK中JAXB相关的重要Class和Interface
1、JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。
2、Marshaller接口,将Java对象序列化为XML数据。
3、Unmarshaller接口,将XML数据反序列化为Java对象。
JDK中JAXB相关的重要Annotation注解
1、@XmlRootElement
说明:将类或枚举类型映射到XML元素,这是xml的入口,根节点,要记得在声明
范围:顶层类,枚举类型
属性说明:name: XML元素的本地名称,namespace: XML元素的名称空间名
2、@XmlElement
说明:将JavaBean属性映射到派生于属性节点名称的XML元素
范围:JavaBean属性、非static(静态)、非transient(瞬时)字段、XmlElements中的程序元素
属性说明:defaultValue:此元素的默认值,
name:xml模式元素的名称,
namespace:xml模式元素的xml目标名称空间,
nillable:是否可以为空,默认false,
required:如果 required() 为 true,则将 Javabean 属性映射到一个 minOccurs="1" 的 XML 模式元素声明。maxOccurs 为 "1" 表示单个赋值的属性,maxOccurs 为 "unbounded" 则表示多个赋值的属性;如果 required() 为 false,则将 Javabean 属性映射到一个 minOccurs="0" 的 XML 模式元素声明。
注意:
如果只有属性,没有get/set方法,xml是不会输出该节点的,需要在属性上设置@XmlElement,如果有get方法要要在get上设置@XmlElement,不然会异常。
3、@XmlElements
说明:多个@XmlElement注解的容器,此注解用于注释JavaBean集合属性(如列表)
属性说明:value:@XmlElement注解集合
例如@XmlElementWrapper(name="DEGREES")
@XmlElements({
@XmlElement(name="Degree",type=Degrees.class),
@XmlElement(name="b",type=String.class)
})
private List degrees;
4、@XmlAttribute
说明:将JavaBean属性映射到XML属性
范围ÿ