用@XmlType的propOrder属性 来指定序列化的顺序。
2012-11-21 17:22
225 查看
默认情况下,Jaxb编组出来的xml中的字段顺序是随机的,你可以使用@XmlType的propOrder属性
来指定序列化的顺序。
第一步:定义java类时,使用@XmlType(propOrder = { "id", "name", "age","book"})指定输出顺序。
Java代码
package step2;
import java.util.Set;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement
@XmlType(propOrder = { "id", "name", "age","book"})
public class Customer {
String name;
int age;
int id;
Set<Book> book;
@XmlElement(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name="age")
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@XmlElement(name="id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Customer [id=" + id + ",name=" + name + ",age=" + age + ",book=" + book + "]";
}
@XmlElementWrapper(name="books")
@XmlElement(name="book")
public Set<Book> getBook() {
return book;
}
public void setBook(Set<Book> book) {
this.book = book;
}
}
输出的xml:
Xml代码
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
<id>100</id>
<name>suo</name>
<age>29</age>
<books>
<book>
<id>1</id>
<name>哈里波特</name>
<price>100.0</price>
</book>
<book>
<id>2</id>
<name>苹果</name>
<price>50.0</price>
</book>
</books>
</customer>
注:
1.对于@XmlElementWrapper标注的属性,不能出现在@XmlType的propOrder列表中。
2.对于所有@XmlElement标注过的属性,必须出现在@XmlType的propOrder列表中。
来指定序列化的顺序。
第一步:定义java类时,使用@XmlType(propOrder = { "id", "name", "age","book"})指定输出顺序。
Java代码
package step2;
import java.util.Set;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement
@XmlType(propOrder = { "id", "name", "age","book"})
public class Customer {
String name;
int age;
int id;
Set<Book> book;
@XmlElement(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name="age")
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@XmlElement(name="id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Customer [id=" + id + ",name=" + name + ",age=" + age + ",book=" + book + "]";
}
@XmlElementWrapper(name="books")
@XmlElement(name="book")
public Set<Book> getBook() {
return book;
}
public void setBook(Set<Book> book) {
this.book = book;
}
}
输出的xml:
Xml代码
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
<id>100</id>
<name>suo</name>
<age>29</age>
<books>
<book>
<id>1</id>
<name>哈里波特</name>
<price>100.0</price>
</book>
<book>
<id>2</id>
<name>苹果</name>
<price>50.0</price>
</book>
</books>
</customer>
注:
1.对于@XmlElementWrapper标注的属性,不能出现在@XmlType的propOrder列表中。
2.对于所有@XmlElement标注过的属性,必须出现在@XmlType的propOrder列表中。
相关文章推荐
- XmlSerializer 构造函数 (Type, String) 将指定类型的对象序列化为 XML 文档,也可以将 XML 文档反序列化为指定类型的对象
- 动态结果配置:struts.xml中,<result>属性的type配置之redirectAction(请求重定向到指定的Action)
- 如何在 XML 文件中取得指定属性的相关值?
- Dom4j解析XML文本,遍历指定节点下的节点内容和属性,并存入List<Map<String,Object>
- java 序列化时排除指定属性
- C#.NET解析XML(使用属性控制 XML 序列化)
- 使用自带的JavaScriptSerializer序列化实体 指定的属性如何不序列化
- 指定JSON.toJSONString中实体类属性的输出顺序
- struts.xml文件中 result标签的 type 属性为redirectAction时URL参数与值的获得
- FastJson bean序列化属性顺序问题
- C#.NET解析XML(使用属性控制 XML 序列化)
- unity序列化和反序列XML,并添加属性
- C# XML 输出xml根节点下的直接(第一级)子节点指定的属性的名字和值
- struts2 struts.xml result type 属性的说明
- solr schema.xml FieldType属性详解
- 通过XmlNodeType.ProcessingInstruction属性获取到InfoPath XML文件头信息
- IOS 反射获取属性,序列化成xml
- 指定JSON.toJSONString中实体类属性的输出顺序
- IEnumerable<IEnumerable<string>>结构解析通用解决方案(支持指定属性顺序)
- C# XML与实体互转,实体类反序列化属性对应转换成 XmlAttribute