如何使用JAXB以特殊顺序创建@XmlAttribute?

Chr*_*ris 7 jaxb xml-attribute

我有一个XML文件,它需要一个元素中的3个属性.如何按照我的意愿制作街道,拉链和城市属性的顺序?

<address street="Big Street" zip="2012" city="Austin">
</address>
Run Code Online (Sandbox Code Playgroud)
@XmlType(name="Street)
@XmlRootElement(name = "Street")
public class Street {

@XmlAttribute
private String name;

@XmlAttribute
private String type;

    ... set and get method
}
Run Code Online (Sandbox Code Playgroud)

hum*_*ity 9

有趣的是,属性似乎与代码中提到的顺序相反.在我的例子中,我使用两个变量(名称和值),我必须将它们声明为:

// The inverse order of name & value seems to make them render in XML in name/value order
@XmlAttribute
protected String value;
@XmlAttribute
protected String name;
Run Code Online (Sandbox Code Playgroud)

生成XML时,会产生以下结果:

<attribute name="nameValue" value="valueValue"/>
Run Code Online (Sandbox Code Playgroud)

  • 它们似乎按字母顺序在Java 6中按照Java 7上的声明顺序排序(在两种情况下都使用内置的JDK JAXB提供程序). (2认同)

mpr*_*hat 7

您可以使用@XmlAccessorOrder(具有预定义值)或@XmlType(仅适用于属性)来控制排序.

样品

编辑:

对于自定义排序,JAXB规范不提供任何内容,但是如果您的JAXB提供程序为您提供某些功能,则可以执行此操作.

找到这个链接,它说的是使用EclipseLink JAXB进行排序.