`
123003473
  • 浏览: 1060099 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

    博客分类:
  • java
 
阅读更多
默认情况下,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列表中。



分享到:
评论

相关推荐

    Java解析和生成XML.pdf

    - 使用`@XmlType`时,如果指定了propOrder属性,则必须列出JavaBean中所有属性名。若未指定或有遗漏,可能会导致在解析或生成XML时出错。 - 使用`@XmlElement`时,可以通过name属性改变Java对象属性在XML中显示的...

    jaxb解析xml

    @XmlElement 将 java 对象的属性映射为 xml 的节点,在使用@XmlElement 时,可通过 name 属性改变 java 对象属性在 xml 中显示的节点名。 参数: * defaultValue:指定节点默认值。 * name:指定节点名称。 * ...

    C#对象序列化与反序列化

    - **强制指定成员的序列化顺序**:使用`[XmlElement(Order = n)]`特性来控制成员的序列化顺序。 - **自定义序列化行为**:通过实现`IXmlSerializable`接口来自定义序列化逻辑。 - **序列化设置XML命名空间**:使用`...

    JAXB-XML注解

    它有三个属性:name、propOrder、namespace,其中 name 属性指定了 XML 元素的名称,propOrder 属性指定了 Java 对象的属性顺序,namespace 属性指定了 XML 元素的命名空间。 例如: ```java @XmlType(name = ...

    jaxb功能用法

    1. **配置Marshaller**:在序列化之前,可以设置`Marshaller`的`schema`属性,指定XSD文件。这样,JAXB会在生成XML时进行验证。 2. **验证异常**:如果XML不符合XSD规范,`Marshaller`在序列化过程中会抛出`...

    在.NET中实现对象序列化

    例如,`XmlType`特性用于指定XML类型的名称和命名空间,而`XmlElement`特性用于标记要序列化为XML元素的字段或属性。`XmlArray`和`XmlArrayItem`特性则用于处理数组或集合,定义它们在XML中的表示方式。 以下是一个...

    09学习WCF序列化

    要使用此序列化器,需要定义一个包含`[DataContract]`属性的类,并在类的成员上使用`[DataMember]`属性来指定哪些字段或属性需要序列化。 ```csharp [DataContract] public class MyData { [DataMember] public ...

    20120102 NET XML序列化为实体类与反序列化

    6. **XML数据类型映射**:默认情况下,.NET会自动将数据类型映射到相应的XML元素,但可以使用`[XmlType]`、`[XmlElement(DataType="")]`等特性来指定特定的XML数据类型。 在ASP.NET开发中,XML序列化常用于保存和...

    jaxb生成XML例子

    在`WriterXml`类中,propOrder 属性指定了"id", "name", "age", "book"这四个属性的输出顺序。如果未指定,JAXB将以自然顺序处理属性。 2. **@XmlRootElement**: 用在类上,标记这个类作为XML文档的根元素。在例子...

    XMLtype-开源

    XMLtype 是一款开源的、基于控制台的 XML 文件编辑器,专为处理 UTF-8 编码的 XML 文档而设计。它具有高度的多语言兼容性,支持...通过熟练掌握 XMLtype,你可以在处理 XML 文档时提高效率,确保数据的准确性和标准化。

    xmltype需要jar包

    XMLType是Oracle数据库中用于存储和操作XML数据的一种特殊数据类型。在Oracle环境中处理XMLType时,需要依赖特定的Java库,这些库包含了处理XML数据的API和功能。标题提到的"xmltype需要jar包",实际上指的是在Java...

    XML序列化之System.Xml.Serialization demo

    现在,让我们通过一个简单的示例来展示如何使用`XmlSerializer`进行XML序列化和反序列化: ```csharp using System; using System.IO; using System.Xml.Serialization; public class Person { public string ...

    java中xml文件的处理及oracle中xmltype的插入和读取.pdf

    我们还使用 `XMLType COLUMN resume STORE AS CLOB` 语句指定了 `resume` 列的存储方式为 CLOB(Character Large OBject)。 二、创建 XML 文件类 在 Java 中,我们可以使用 JDOM 库来处理 XML 文件。首先,我们...

    深入分析XmlSerializer对象的Xml序列化与反序列化的示例详解

    Xml序列化与反序列化是.NET框架中一种重要的数据转换技术,它允许我们将对象的状态转换为XML格式的数据,便于存储、传输或恢复。XmlSerializer类是实现这一功能的关键,它位于System.Xml.Serialization命名空间中。...

    oracle操作xmltype

    XMLType可以与XML Schema(XSD)结合使用,提供数据验证和类型检查。当XMLType列与XML Schema绑定时,Oracle将自动验证插入或更新的XML文档是否符合指定的模式。 七、XMLType与其他对象的交互 XMLType可以与Oracle...

    oracle解析XMLTYPE字段里面节点值,并用PL/SQL将查询结果导出为excel

    oracle解析XMLTYPE字段里面节点值,并用PL/SQL将查询结果导出为excel

    WebService_CXF学习

    3. **@XmlAccessorType**:控制类的字段或方法如何被序列化,这里选择了FIELD,意味着所有非静态、非瞬态的属性会被自动绑定到XML中。 4. **@XmlType**:映射类到XML Schema类型,允许将Java类转换为XML数据结构。 5...

    JAXB工具

    首先,定义了一个名为`Product`的Java类,该类使用JAXB注解来指定XML映射规则。`@XmlRootElement`注解定义了XML根元素的名称和命名空间,`@XmlAccessorType`定义了访问类型,`@XmlType`注解提供了类级别的元数据,而...

    CXF开发webservice服务端

    需要注意的是,`@XmlType`注解中的`propOrder`属性必须与类中的属性顺序保持一致,否则在服务器启动时会出现错误提示。 ##### 3. 接口定义 定义一个名为`HelloWorld`的接口,该接口将包含两个方法:`stringInt` 和 ...

    JAXB注解命名空间使用到的jar包

    4. **@XmlType**: 这个注解可以用来定义类的命名空间,通常与`@XmlAccessorType`一起使用,以控制字段和属性的序列化和反序列化。 5. **处理命名空间的jar包**:虽然JDK 1.6内置了基本的JAXB实现,但处理特定的命名...

Global site tag (gtag.js) - Google Analytics