Как я могу сделать @XmlAttribute в специальном порядке с помощью JAXB?

У меня есть файл 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
}

person Chris    schedule 30.04.2012    source источник


Ответы (2)


Вы можете использовать @XmlAccessorOrder (имеет предопределенные значения) или @XmlType( Работает только для свойств) для управления порядком.

Примеры

Редактировать :

Для индивидуального заказа спецификация JAXB ничего не предоставляет, но вы можете это сделать, если ваш поставщик JAXB предоставит вам некоторые функции.

Нашел эту ссылку, где говорится о заказе с использованием EclipseLink JAXB.

person mprabhat    schedule 30.04.2012
comment
да вроде ничего не можем с этим поделать. - person Chris; 02.05.2012
comment
Да, если вы не восстановите API-интерфейсы провайдера - person mprabhat; 02.05.2012

Как ни странно, атрибуты кажутся в обратном порядке, чем они упоминаются в коде. В моем случае я использую две переменные (имя и значение), и мне пришлось объявить их как:

// 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"/>
person humanity    schedule 13.11.2012
comment
Кажется, они отсортированы по алфавиту в Java 6 и в порядке объявления в Java 7 (в обоих случаях с использованием встроенного поставщика JDK JAXB). - person Andreas; 28.06.2013
comment
Java 7 также, похоже, учитывает propOrder. - person Andreas; 28.06.2013