用@XmlType的propOrder属性 来指定序列化的顺序

默认情况下,Jaxb编组出来的xml中的字段顺序是随机的,你可以使用@XmlType的propOrder属性
来指定序列化的顺序。


第一步:定义java类时,使用@XmlType(propOrder = { "id", "name", "age","book"})指定输出顺序。


01.package step2;  
02.import java.util.Set;  
03.  
04.import javax.xml.bind.annotation.XmlElement;  
05.import javax.xml.bind.annotation.XmlElementWrapper;  
06.import javax.xml.bind.annotation.XmlRootElement;  
07.import javax.xml.bind.annotation.XmlType;  
08.  
09.@XmlRootElement  
10.@XmlType(propOrder = { "id", "name", "age","book"})  
11.public class Customer {  
12.    String name;  
13.    int age;  
14.    int id;  
15.    Set<Book> book;  
16.    @XmlElement(name="name")  
17.    public String getName() {  
18.        return name;  
19.    }  
20.  
21.    public void setName(String name) {  
22.        this.name = name;  
23.    }  
24.  
25.    @XmlElement(name="age")  
26.    public int getAge() {  
27.        return age;  
28.    }  
29.  
30.    public void setAge(int age) {  
31.        this.age = age;  
32.    }  
33.    @XmlElement(name="id")  
34.    public int getId() {  
35.        return id;  
36.    }  
37.  
38.    public void setId(int id) {  
39.        this.id = id;  
40.    }  
41.  
42.      
43.    @Override  
44.    public String toString() {  
45.        return "Customer [id=" + id + ",name=" + name + ",age=" + age + ",book=" + book + "]";  
46.    }  
47.    @XmlElementWrapper(name="books")  
48.    @XmlElement(name="book")  
49.    public Set<Book> getBook() {  
50.        return book;  
51.    }  
52.  
53.    public void setBook(Set<Book> book) {  
54.        this.book = book;  
55.    }  
56.  
57.      
58.}  


输出的xml:

01.<?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
02.<customer>  
03.    <id>100</id>  
04.    <name>suo</name>  
05.    <age>29</age>  
06.    <books>  
07.        <book>  
08.            <id>1</id>  
09.            <name>哈里波特</name>  
10.            <price>100.0</price>  
11.        </book>  
12.        <book>  
13.            <id>2</id>  
14.            <name>苹果</name>  
15.            <price>50.0</price>  
16.        </book>  
17.    </books>  
18.</customer>



注:
1.对于@XmlElementWrapper标注的属性,不能出现在@XmlType的propOrder列表中。
2.对于所有@XmlElement标注过的属性,必须出现在@XmlType的propOrder列表中。



你可能感兴趣的:(order)