2012-04-30 33 views
5

我有一個元素中需要3個屬性的XML文件。如何按照我的意願製作街道,郵編和城市屬性的順序?如何使用JAXB以特殊順序創建@XmlAttribute?

<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 
} 

回答

5

您可以使用@XmlAccessorOrder(已預定義值)或@XmlType(僅適用於屬性)來管理排序。

Samples

編輯:

對於自定義排序JAXB規範犯規提供任何東西,但如果你的JAXB提供者爲您提供了一些功能,你可以做。

發現此link它談論使用EclipseLink JAXB進行排序。

+0

是啊,似乎我們無能爲力。 – Chris

+0

是的,除非你恢復到提供者的API – mprabhat

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"/> 
+0

我在我的代碼中看不到相同的東西... – chama

+2

看起來他們在Java 6中按照字母順序排列,並且按照Java 7的聲明順序排序(在兩種情況下都使用內置JDK JAXB提供者)。 – Andreas

+0

Java 7似乎也考慮了'propOrder'。 – Andreas