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

时间:2012-04-30 05:33:33

标签: jaxb xml-attribute

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

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

@XmlAttribute
private String name;

@XmlAttribute
private String type;

    ... set and get method
}

2 个答案:

答案 0 :(得分:8)

有趣的是,这些属性似乎与代码中提到的属性相反。在我的情况下,我使用两个变量(名称和值),我必须将它们声明为:

// 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;

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

<attribute name="nameValue" value="valueValue"/>

答案 1 :(得分:7)

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

Samples

编辑:

对于自定义排序,JAXB规范不提供任何内容,但如果您的JAXB提供程序为您提供某些功能,则可以这样做。

找到这个link,它说的是使用EclipseLink JAXB进行排序。