默认情况下,Jaxb编组出来的xml中的字段顺序是随机的,你可以使用@XmlType的propOrder属性
来指定序列化的顺序。
第一步:定义java类时,使用@XmlType(propOrder = { "id", "name", "age","book"})指定输出顺序。
输出的xml:
[b]
注:
1.对于@XmlElementWrapper标注的属性,不能出现在@XmlType的propOrder列表中。
2.对于所有@XmlElement标注过的属性,必须出现在@XmlType的propOrder列表中。[/b]
来指定序列化的顺序。
第一步:定义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>
[b]
注:
1.对于@XmlElementWrapper标注的属性,不能出现在@XmlType的propOrder列表中。
2.对于所有@XmlElement标注过的属性,必须出现在@XmlType的propOrder列表中。[/b]