Quiero que el resultado XML serializado de mi clase Java respete el orden de las propiedades en la clase Java.JAXB y orden de propiedad
Parece que JAXB ordena alfabéticamente.
que puede cambiar este comportamiento usando @XmlType
con propOrder y especificar todas las propiedades, pero tengo una clase con muchas propiedades y éstas aún no se han finalizado.
leí que la especificación de un vacío propOrder lo haría pero no lo hacen.
Mi clase de ejemplo:
package test;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement
//@XmlType(propOrder={"company", "scheme", "agreementNumber"})
@XmlType(propOrder={}) // makes no difference - still alphabetical in XML
public class CustomerPlan2 {
private String company;
private String scheme;
private String agreementNumber;
@XmlElement(name="Company")
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
@XmlElement(name="Scheme")
public String getScheme() {
return scheme;
}
public void setScheme(String scheme) {
this.scheme = scheme;
}
@XmlElement(name="AgreementNumber")
public String getAgreementNumber() {
return agreementNumber;
}
public void setAgreementNumber(String agreementNumber) {
this.agreementNumber = agreementNumber;
}
}
Mi código de serialización:
CustomerPlan2 cp2 = new CustomerPlan2();
cp2.setCompany("company");
cp2.setScheme("scheme");
cp2.setAgreementNumber("agreementnumber");
JAXBContext context = JAXBContext.newInstance(CustomerPlan2.class);
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(cp2, new FileWriter("C:\\temp\\out.xml"));
Salida:
<customerPlan2>
<AgreementNumber>agreementnumber</AgreementNumber>
<Company>company</Company>
<Scheme>scheme</Scheme>
</customerPlan2>
Quiero que mi salida sea (como el orden propiedad de mi clase) :
<customerPlan2>
<Company>company</Company>
<Scheme>scheme</Scheme>
<AgreementNumber>agreementnumber</AgreementNumber>
</customerPlan2>
Gracias por cualquier ayuda sobre esto.
¿Esto también debería funcionar con las propiedades heredadas de su superclase? –
Hice esto y obtuve el orden alfa inverso cuando ejecuté la clasificación en un entorno y el orden alfa normal cuando ejecuté la clasificación en otro entorno. ¿Alguna idea/sugerencia? – Achilles929