我想從我的Java類的序列化的XML輸出,以遵守Java類中的屬性的順序。JAXB和財產訂購
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>
感謝您的任何幫助。
這是否也適用於您的超類的繼承屬性? – 2015-12-08 09:52:48
我做到了這一點,並且在一個環境中運行編組時以及在另一個環境中運行編組時正常的字母順序,獲得了逆向alpha排序。任何想法/建議? – Achilles929 2016-10-04 21:11:28