jaxb 元素排序

来源:互联网 发布:unity3d 弓箭蓄力 编辑:程序博客网 时间:2024/04/27 20:48

marshall 出来的xml文件都是

根据首字符排列的, 感觉跟如下解释的不大一样,

也就是说UNDEFINED也是按照ALPHABETICAL排列的

搞不懂

另外那个@XmlType.propOrder:还是挺好用滴

-----------------------

一下摘自网络

@XmlAccessorOrder  @XmlType.propOrder 用于指明xml schema元素的顺序

使用@XmlAccessorOrder

包括XmlAccessorOrder.UNDEFINED  XmlAccessorOrder.ALPHABETICAL两个值,默认为UNDEFINED(无序),XmlAccessorOrder.ALPHABETICAL是指按属性的字母顺序排序。

@XmlAccessorOrder定义在一个package之上时候(Package annotations must be in file package-info.java),此包下的所有类都遵守@XmlAccessorOrder定义的规则;当它定义在类之上时,只有该类的内容遵守规则。

就近原则:如果出现在package之上使用@XmlAccessorOrder并且在该包下的某个类又使用了@XmlAccessorOrder,那在该类上定义的@XmlAccessorOrder规则才起作用,如在package上声明@XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL),而在某类上声明为UNDEFINED,则该类遵守的规则为UNDEFINED

使用@XmlType.propOrder

propOrder可以定义class中字段出现在xml中的顺序,class中所有public的字段必须列的propOrder的参数列表中,如果不想将某public字段列在列表中,可在字段上使用@XmlTransient or @XmlAttribute注解标识。

默认的内容顺序为@XmlType.propOrder is {} or {""}not active 可认为无序?),在这种情况下,@XmlAccessorOrder 注解具有优先权。当@XmlAccessorOrder @XmlType.propOrder同时出现时,propOrder总是具有优先权(最终起作用)。