默认情况下,Jaxb编组出来的xml中的字段顺序是随机的,你可以使用@XmlType的propOrder属性
来指定序列化的顺序。
第一步:定义java类时,使用@XmlType(propOrder = { "id", "name", "age","book"})指定输出顺序。
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 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列表中。
分享到:
相关推荐
1. 通过在 Java 类中标注注解(Annotation)的方式将一个 Java 对象绑定到一段 XML。 2. 使用 JAXB 的 XJC 工具,通过定义 schema 的方式实现 Java 对象与 XML 的绑定。 ### 3.2 JAXB Annotation 使用说明 #### ...
在XML和Java对象的映射中,JAXB(Java Architecture for XML Binding)提供了一系列注解,如: - `@XmlElement`、`@XmlAttribute`、`@XmlRootElement`、`@XmlType`等,它们用于控制XML到Java对象的转换规则。 在更...
在上面的示例中,我们定义了一个 City 类,并使用 @XmlRootElement 注解标注该类。在 propOrder 属性中,我们指定了 XML 元素的顺序。 ```java import org.springframework.stereotype.Controller; import org....
为了传递参数,我们需要创建一个自定义类,如`Customer`,并使用JAXB注解来支持XML序列化和反序列化。在这里,`Customer`类包含了`id`、`name`、`age`和`birthday`属性,并使用`@XmlElement`进行标注。 ```java @...
- **带自定义对象传递**: 如果需要传递自定义对象,你需要为对象创建Java类,并使用`@XmlType`和`@XmlElement`等JAXB注解进行标注,以便XML序列化和反序列化。 1.3 **XFire发布Web Services** - **传递简单数据类型...