简单介绍
@XmlRootElement指定根节点,name指定根节点名称,nameSpace指定命名空间。
@XmlAccessorType用于指定由java对象生成xml文件时对java对象属性的访问方式。常与@XmlRootElement、@XmlType一起使用。它的属性值是XmlAccessType的4个枚举值,分别为:
XmlAccessType.FIELD:java对象中的所有成员变量;
XmlAccessType.PROPERTY:java对象中所有通过getter/setter方式访问的成员变量;
XmlAccessType.PUBLIC_MEMBER:java对象中所有的public访问权限的成员变量和通过getter/setter方式访问的成员变量;默认;
XmlAccessType.NONE:java对象的所有属性都不映射为xml的元素。
注意:@XmlAccessorType的默认访问级别是XmlAccessType.PUBLIC_MEMBER,因此,如果java对象中的private成员变量设置了public权限的getter/setter方法,就不要在private变量上使用@XmlElement和@XmlAttribute注解,否则在由java对象生成xml时会报同一个属性在java类里存在两次的错误。同理,如果@XmlAccessorType的访问权限为XmlAccessType.NONE,如果在java的成员变量上使用了@XmlElement或@XmlAttribute注解,这些成员变量依然可以映射到xml文件。@XmlType使用propOrder属性来控制XML元素的排序,使用该属性时,必须列出JavaBean对象中的所有字段;当XmlAccessType.FIELD时值为成员变量名称;当XmlAccessType.PUBLIC_MEMBER时为get/set的名称;
@XmlElement映射Java属性与xml标签
@XmlAccessorOrder用于对java对象生成的xml元素进行排序。它有两个属性值:
AccessorOrder.ALPHABETICAL:对生成的xml元素按字母书序排序
XmlAccessOrder.UNDEFINED:不排序
JAXB注解介绍
JAXB注解使用
Java实体
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
//设置生成的xml的根节点的名称
@XmlRootElement(name = "DOCUMENT")
//设置根据字段生成
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DOCUMENT", propOrder = {
"signature", "packet" })
public class Request {
@XmlElement(name = "SIGNATURE")
private String signature;
@XmlElement(name = "PACKET")
private Packet packet;
........
}
@XmlRootElement(name = "PACKET")
@XmlAccessorType(XmlAccessType.FIELD)
//按xml标签字母排序
@XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL)
@XmlType(name = "PACKET", propOrder = {
"head", "body" })
public class Packet {
@XmlElement(name = "HEAD")
private Head head;
@XmlElement(name = "BODY")
private Body body;