1. 批注说明
1.1 @XmlRootElement
XML 文件内容的根元素,必须表明这个注解。
默认的名称是字段名称的全小写,也可以修改名称,并指定一个命名空间。
@XmlRootElement(name="b" nameSpace="http://test")
1.2 @XmlElement
表明该字段是一个 XML 元素。
默认的名称是字段名称的全小写,也可以修改名称。
@XmlElement(name="email-address")
1.3 @XmlAttribute
表明该字段是一个 XML 属性。
1.4 @XmlValue
表明该字段作为父 XML 元素的值输出。
1.5 @XmlAccessorType
是否对字段或 JavaBean 属性进行序列化。
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
可以设置的值有:
(1)FIELD 类中的每个非静态、非瞬态字段将会自动绑定到 XML,除非由 XmlTransient 注解。
(2)NONE 类中的所有字段或属性都不能绑定到 XML,除非使用 JAXB 注解专门对它们进行注解。
(3)PROPERTY 类中的每个get/set方法将会自动绑定到 XML,除非由 XmlTransient 注解。
(4)PUBLIC_MEMBER 每个公共get/set方法对和每个公共字段将会自动绑定到 XML,除非由 XmlTransient 注解。
1.6 @XmlTransient
2. 使用例子
(1)@XmlAccessorType(XmlAccessType.FIELD)
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Boy {
String name = "CY";
}
生成的 XML 如下:
?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<boy>
>name>CY</name>
</boy>
(2)@XmlAccessorType(XmlAccessType.PROPERTY)
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
String name = "CY";
}
因为 name 没有对应的get/set方法,因此 name 不是属性(因为没有 get set方法),所以 name 不能转换成标签。
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<boy/>
(3)@XmlAccessorType(XmlAccessType.PROPERTY)
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
String name = "CY";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<boy>
<name>CY</name>
</boy>
(4)@XmlAccessorType(XmlAccessType.PROPERTY)
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
@XmlElement
int age = 10;
String name = "CY";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<boy>
<age>10</age>
<name>CY</name>
</boy>
(5)List 字段
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
private List<String> emailAddresses;
public Customer() {
emailAddresses = new ArrayList<String>();
}
public List<String> getEmailAddresses() {
return emailAddresses;
}
public void setEmailAddresses(List<String> emailAddresses) {
this.emailAddresses = emailAddresses;
}
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
<emailAddresses>janed@example.com</emailAddresses>
<emailAddresses>jdoe@example.org</emailAddresses>
</customer>
(6)@XmlElementWrapper
@XmlElementWrapper 注解在原來字段对应的元素的外面再包一层元素。
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlElementWrapper(name="email-addresses")
@XmlElement(name="email-address")
private List<String> emailAddresses;
public Customer() {
emailAddresses = new ArrayList<String>();
}
public List<String> getEmailAddresses() {
return emailAddresses;
}
public void setEmailAddresses(List<String> emailAddresses) {
this.emailAddresses = emailAddresses;
}
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
<email-addresses>
<email-address>janed@example.com</email-address>
<email-address>jdoe@example.org</email-address>
</email-addresses>
</customer>
(7)@XmlList
@XmlList 注解把 List 对象中的每个值,用空格间隔,输出在一行。
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlList
private List<String> emailAddresses;
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
<emailAddresses>janed@example.com jdoe@example.org</emailAddresses>
</customer>
(8)@XmlList + @XmlAttribute
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlList
@XmlAttribute
private List<String> emailAddresses;
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer
emailAddresses="janed@example.com jdoe@example.org"/>
<customer>
(9)@XmlList + @XmlValue
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlList
@XmlValue
private List<String> emailAddresses;
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>janed@example.com jdoe@example.org</customer>
参考文献:
1. http://jackyrong.iteye.com/blog/1890669
2. http://desert3.iteye.com/blog/1570092
1.1 @XmlRootElement
XML 文件内容的根元素,必须表明这个注解。
默认的名称是字段名称的全小写,也可以修改名称,并指定一个命名空间。
@XmlRootElement(name="b" nameSpace="http://test")
1.2 @XmlElement
表明该字段是一个 XML 元素。
默认的名称是字段名称的全小写,也可以修改名称。
@XmlElement(name="email-address")
1.3 @XmlAttribute
表明该字段是一个 XML 属性。
1.4 @XmlValue
表明该字段作为父 XML 元素的值输出。
1.5 @XmlAccessorType
是否对字段或 JavaBean 属性进行序列化。
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
可以设置的值有:
(1)FIELD 类中的每个非静态、非瞬态字段将会自动绑定到 XML,除非由 XmlTransient 注解。
(2)NONE 类中的所有字段或属性都不能绑定到 XML,除非使用 JAXB 注解专门对它们进行注解。
(3)PROPERTY 类中的每个get/set方法将会自动绑定到 XML,除非由 XmlTransient 注解。
(4)PUBLIC_MEMBER 每个公共get/set方法对和每个公共字段将会自动绑定到 XML,除非由 XmlTransient 注解。
1.6 @XmlTransient
2. 使用例子
(1)@XmlAccessorType(XmlAccessType.FIELD)
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Boy {
String name = "CY";
}
生成的 XML 如下:
?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<boy>
>name>CY</name>
</boy>
(2)@XmlAccessorType(XmlAccessType.PROPERTY)
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
String name = "CY";
}
因为 name 没有对应的get/set方法,因此 name 不是属性(因为没有 get set方法),所以 name 不能转换成标签。
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<boy/>
(3)@XmlAccessorType(XmlAccessType.PROPERTY)
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
String name = "CY";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<boy>
<name>CY</name>
</boy>
(4)@XmlAccessorType(XmlAccessType.PROPERTY)
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
@XmlElement
int age = 10;
String name = "CY";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<boy>
<age>10</age>
<name>CY</name>
</boy>
(5)List 字段
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
private List<String> emailAddresses;
public Customer() {
emailAddresses = new ArrayList<String>();
}
public List<String> getEmailAddresses() {
return emailAddresses;
}
public void setEmailAddresses(List<String> emailAddresses) {
this.emailAddresses = emailAddresses;
}
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
<emailAddresses>janed@example.com</emailAddresses>
<emailAddresses>jdoe@example.org</emailAddresses>
</customer>
(6)@XmlElementWrapper
@XmlElementWrapper 注解在原來字段对应的元素的外面再包一层元素。
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlElementWrapper(name="email-addresses")
@XmlElement(name="email-address")
private List<String> emailAddresses;
public Customer() {
emailAddresses = new ArrayList<String>();
}
public List<String> getEmailAddresses() {
return emailAddresses;
}
public void setEmailAddresses(List<String> emailAddresses) {
this.emailAddresses = emailAddresses;
}
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
<email-addresses>
<email-address>janed@example.com</email-address>
<email-address>jdoe@example.org</email-address>
</email-addresses>
</customer>
(7)@XmlList
@XmlList 注解把 List 对象中的每个值,用空格间隔,输出在一行。
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlList
private List<String> emailAddresses;
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
<emailAddresses>janed@example.com jdoe@example.org</emailAddresses>
</customer>
(8)@XmlList + @XmlAttribute
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlList
@XmlAttribute
private List<String> emailAddresses;
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer
emailAddresses="janed@example.com jdoe@example.org"/>
<customer>
(9)@XmlList + @XmlValue
类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlList
@XmlValue
private List<String> emailAddresses;
}
生成的 XML 如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>janed@example.com jdoe@example.org</customer>
参考文献:
1. http://jackyrong.iteye.com/blog/1890669
2. http://desert3.iteye.com/blog/1570092
没有评论:
发表评论