用@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>


[b]
注:
1.对于@XmlElementWrapper标注的属性,不能出现在@XmlType的propOrder列表中。
2.对于所有@XmlElement标注过的属性,必须出现在@XmlType的propOrder列表中。[/b]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值