2012-04-30 27 views
5

Tengo un archivo XML que necesita 3 atributos en un elemento. ¿Cómo puedo hacer el orden de la calle, el zip y el atributo de la ciudad como quería?¿Cómo puedo hacer @XmlAttribute en una orden especial usando 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 
} 

Respuesta

5

Puede utilizar @XmlAccessorOrder (valores predefinidos), o ha @XmlType (sólo funciona para las propiedades) para gobernar el pedido.

Samples

Editar:

Por encargo especificación JAXB pedido duerma ofrece nada, pero se puede hacer si su proveedor de JAXB que ofrece algunas características.

Encontraron esto link donde se habla sobre ordenar usando EclipseLink JAXB.

+0

sí, parece que no podemos hacer nada al respecto. – Chris

+0

Sí, a menos que restablezca las API de proveedor – mprabhat

8

Anecdóticamente, los atributos parecen estar en orden inverso a los que se mencionan en el código. En mi caso, estoy usando dos variables (nombre & valor) y que tenía que declarar como:

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

Cuando se genera el XML, el resultado es el siguiente:

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

No veo lo mismo en mi código ... – chama

+2

Parece que están ordenados alfabéticamente en Java 6 y en el orden de declaración en Java 7 (en ambos casos utilizando el built-in Proveedor JDK JAXB). – Andreas

+0

Java 7 también parece tener en cuenta 'propOrder'. – Andreas

Cuestiones relacionadas