JAXB注解

JAXB注解
1. @XmlRootElement
是类级别注解.将类映射为xml全局元素,也叫根元素.如果要使用JAXB,此注解必不可少.
此注解通过设置name属性的值来设置xml的全局元素:

@XmlRootElement(name = "uuu")
public class User {
    private Integer id;
    private String name;
    private Integer age;
    
    ......此实体类的get/set方法
}
<uuu>
  <age>18</age>
  <id>1</id>
  <name>lili</name>
</uuu>

此注解不设置name属性则默认使用类名小写作为元素名:

@XmlRootElement
public class User {
    private Integer id;
    private String name;
    private Integer age;

    ......此实体类的get/set方法
}
<user>
  <age>18</age>
  <id>1</id>
  <name>lili</name>
</user>

参数:namespace
namespace属性用于指定生成的元素所属的命名空间

@XmlRootElement(namespace = "ddd")
public class User {
    private Integer id;
    private String name;
    private Integer age;

    ......此实体类的get/set方法
}
<ns2:user xmlns:ns2="ddd">
  <age>18</age>
  <id>1</id>
  <name>lili</name>
</ns2:user>

2.@XmlType 类级别的注解
参数 name定义XML Schema中type的名称
参数 namespace指定Schema中的命名空间
参数 propOrder指定映射XML时的节点顺序,使用该属性时,必须列出JavaBean对象中的所有字段,否则会报错

@XmlRootElement
@XmlType(propOrder = {"id","name","age"})
public class User {
    private Integer id;
    private String name;
    private Integer age;

    ......此实体类的get/set方法
}
<user>
  <id>1</id>
  <name>lili</name>
  <age>18</age>
</user>

参数 factoryClass指定UnMarshal时生成映射类实例所需的工厂类,默认为这个类本身
参数 factoryMethod指定工厂类的工厂方法

3.@XmlAccessorType
类级别的注解.定义这个类中的何种类型需要映射到XML,可以通过它的属性值更好理解这个参数的意义
参数 value 可以接受4个指定值,这几个值是枚举类型,方便调用:
XmlAccessType.FIELD:映射这个类中的所有字段到XML

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class User {
    private Integer id;
    private String name;
    private Integer age;

    ......此实体类的get/set方法
}
<user>
  <id>1</id>
  <name>lili</name>
  <age>18</age>
</user>

XmlAccessType.PROPERTY:映射这个类中的属性(get/set方法)到XML
XmlAccessType.PUBLIC_MEMBER:将这个类中的所有public的field或property同时映射到XML(默认)
XmlAccessType.NONE:不映射

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class User {
    private Integer id;
    private String name;
    private Integer age;

    ......此实体类的get/set方法
}
<user/>

4.@XmlElement
字段,方法,参数级别的注解.该注解可以将被注解的(非静态)字段或者被注解的get/set方法对应的字段映射为本地元素,也就是子元素
参数 name 用于指定映射时的节点名称,指定生成元素的名字,若不指定,默认使用方法名小写作为元素名

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class Person {
    @XmlElement(name = "Id", required = true)
    private Integer id;
    @XmlElement(name = "Name", required = true)
    private String name;
    @XmlElement(name = "Age", required = true)
    private Integer age;

    ......此实体类的get/set方法
}
<person>
  <Id>2</Id>
  <Name>lucy</Name>
  <Age>19</Age>
</person>

此处需要注意一下使用@XmlElement注解时要配合@XmlAccessorType注解使用,否则有可能报下面异常:


参数 namespace 指定映射时的节点命名空间
参数 required 字段是否必须,默认为false
参数 nillable 是否处理空数据,默认为false
参数 type 定义该字段或属性的关联类型

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值