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

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

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

Java代码   收藏代码
  1. package step2;  
  2. import java.util.Set;  
  3.   
  4. import javax.xml.bind.annotation.XmlElement;  
  5. import javax.xml.bind.annotation.XmlElementWrapper;  
  6. import javax.xml.bind.annotation.XmlRootElement;  
  7. import javax.xml.bind.annotation.XmlType;  
  8.   
  9. @XmlRootElement  
  10. @XmlType(propOrder = { "id""name""age","book"})  
  11. public class Customer {  
  12.     String name;  
  13.     int age;  
  14.     int id;  
  15.     Set 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 getBook() {  
  50.         return book;  
  51.     }  
  52.   
  53.     public void setBook(Set book) {  
  54.         this.book = book;  
  55.     }  
  56.   
  57.       
  58. }  
 
输出的xml:
Xml代码   收藏代码
  1. xml version="1.0" encoding="UTF-8" standalone="yes"?>  
  2. <customer>  
  3.     <id>100id>  
  4.     <name>suoname>  
  5.     <age>29age>  
  6.     <books>  
  7.         <book>  
  8.             <id>1id>  
  9.             <name>哈里波特name>  
  10.             <price>100.0price>  
  11.         book>  
  12.         <book>  
  13.             <id>2id>  
  14.             <name>苹果name>  
  15.             <price>50.0price>  
  16.         book>  
  17.     books>  
  18. customer>  
 

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

你可能感兴趣的