xml java jaxb_【Java】JAXB操作XML用法详解

什么是JAXB?

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。在JAX-WS(Java的WebService规范之一)中,JAXB可以实现对象和XML之间相互转换。Unmarshaller类管理将XML数据反序列化为新创建的Java内容树的进程,并可在解组时有选择的验证XML数据。Marshaller类负责管理将Java内容树序列化回XML数据的过程。

bc7fdfc03a181785f939cc7c3cabcadc.gif

在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属性

范围ÿ

你可能感兴趣的:(xml,java,jaxb)