2012-04-30 29 views
5

Tôi có tệp XML cần 3 thuộc tính trong một phần tử. Làm cách nào để đặt thứ tự đường phố, mã zip và thuộc tính thành phố như tôi muốn?Tôi làm cách nào để tạo @XmlAttribute theo thứ tự đặc biệt bằng cách sử dụng JAXB?

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

Trả lời

5

Bạn có thể sử dụng @XmlAccessorOrder (giá trị đã xác định trước) hoặc @XmlType (Chỉ làm việc cho tài sản) để quản lý trật tự.

Samples

Edit:

Đối với tùy chỉnh trật tự JAXB đặc điểm kỹ thuật doesnt cung cấp bất cứ điều gì, nhưng bạn có thể làm gì nếu nhà cung cấp JAXB của bạn cung cấp cho bạn một số tính năng.

Tìm thấy số này link nơi nó nói về việc đặt hàng bằng EclipseLink JAXB.

+0

yeah, có vẻ như chúng ta không thể làm gì trên đó. – Chris

+0

Có trừ khi bạn khôi phục lại API của nhà cung cấp – mprabhat

8

Giai thoại, các thuộc tính dường như theo thứ tự ngược lại so với chúng được đề cập trong mã. Trong trường hợp của tôi, tôi đang sử dụng hai biến (tên & giá trị) và tôi đã phải khai báo như:

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

Khi XML được tạo ra, nó kết quả trong những điều sau đây:

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

Tôi không thấy điều tương tự trong mã của mình ... – chama

+2

Dường như chúng được sắp xếp theo thứ tự bảng chữ cái trong Java 6 và theo thứ tự khai báo trên Java 7 (trong cả hai trường hợp sử dụng tích hợp sẵn Nhà cung cấp JDK JAXB). – Andreas

+0

Java 7 dường như cũng có tính năng 'propOrder'. – Andreas