2012-04-30 22 views
5

Mam plik XML, który potrzebuje 3 atrybutów w elemencie. Jak mogę ustawić kolejność street, zip i atrybut miasta tak, jak chciałem?Jak utworzyć @XmlAttribute w specjalnej kolejności przy użyciu 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 
} 

Odpowiedz

5

Można użyć @XmlAccessorOrder (posiada predefiniowane wartości) lub @XmlType (działa tylko dla właściwości), aby regulować kolejność.

Samples

Edit:

dla niestandardowych specyfikacji JAXB zamawiania robi świadczenia czegokolwiek, ale można to zrobić, jeśli dostawca JAXB zapewnia pewne możliwości.

Znaleziono link, gdzie mówi o zamawianiu za pomocą EclipseLink JAXB.

+0

tak, wygląda na to, że nic na to nie możemy zrobić. – Chris

+0

Tak, chyba że przywrócisz API dostawcy – mprabhat

8

Anegdotycznie, atrybuty wydają się być w odwrotnej kolejności niż są wymienione w kodzie. W moim przypadku używam dwóch zmiennych (nazwa & wartość) i musiałem zadeklarować je jako:

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

Gdy XML jest generowane, skutkuje w następujących przypadkach:

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

Nie widzę tego samego w moim kodzie ... – chama

+2

Wygląda na to, że są one posortowane alfabetycznie w Javie 6 iw kolejności deklaracji na Java 7 (w obu przypadkach za pomocą wbudowanego Dostawca JDCK JAXB). – Andreas

+0

Java 7 także bierze pod uwagę 'propOrder'. – Andreas

Powiązane problemy