Я хочу, чтобы сериализованный вывод XML из моего класса Java соответствовал порядку свойств в классе Java.
Кажется, что JAXB упорядочивает по алфавиту.
Я могу переопределить это, используя@XmlType
с propOrder и указанием ВСЕХ свойств, но у меня есть класс со многими свойствами, и они еще не завершены.
Я читал, что указание пустого propOrder сделает это, но не сделает.
Мой пример класса:
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;
}
}
Мой код сериализации:
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"));
Вывод:
<customerPlan2>
<AgreementNumber>agreementnumber</AgreementNumber>
<Company>company</Company>
<Scheme>scheme</Scheme>
</customerPlan2>
Я хочу, чтобы мои выходные данные были (как порядок свойств моего класса):
<customerPlan2>
<Company>company</Company>
<Scheme>scheme</Scheme>
<AgreementNumber>agreementnumber</AgreementNumber>
</customerPlan2>
Спасибо за любую помощь в этом.