我使用的是改造2與SimpleXmlConverter
和我創建一個SOAP請求對象時所面臨的問題沒有影響,那就是基本上有4個元素孩子是他們中的每一個元素不同的數據類型。@Order註釋具有XML序列化爲了
這裏是XML
輸出我想生產。元素順序必須遵守:
<prf:container>
<prf:aaa>111111111</prf:aaa>
<prf:bbb>true</prf:bbb>
<prf:element>
<prf:ddd>50</prf:ddd>
<prf:eee>false</prf:eee>
</prf:element>
<prf:ccc>textcontent</prf:ccc>
</prf:container>
現在,這裏是我的Android類,Container.java
,代表SOAP請求對象將被序列化:
@Root (name = "prf:container")
@Order(elements={"prf:aaa", "prf:bbb", "prf:element", "prf:ccc"})
public class Container {
@Element (name = "prf:aaa")
private int aaa;
@Element(name = "prf:bbb")
private boolean bbb;
@Element (name = "prf:element", required = false)
private MyElement myElement;
@Element (name = "prf:ccc", required = false)
private String ccc;
}
按照簡單的XML架構文檔:
By域的缺省序列是按照聲明的順序進行。
但是,在Android中,這是不正確的,至少在某些情況下。無論我如何在我的Container
類中設置字段聲明順序,輸出總是具有相同的元素順序。這是一個已知的錯誤,正如其他SO帖子中所報告的那樣。
儘管如此,這個問題還是有解決的。 Order
註釋。 瞭解更多in the Javadoc。
我的問題是使用Order
標註在我的情況沒有幫助。請注意,我的所有元素的名稱都有一個前綴 - prf:
。
如果我從所有元素名稱中刪除prf
前綴,則Order
註釋將正常工作,並強制XML序列化具有已定義的順序。但輸出元素的名稱上不會有前綴。
但我真的需要我的要素有其名稱前綴,否則我的要求將有一個500的響應。我也必須在我的XML輸出中具有所需的元素順序。
對此的任何解決方案?
謝謝
嗨我試過你的上述解決方案。它在Android版本大於或等於5.0的設備上工作正常,但在其下的設備上,訂單不會被保留。你能建議解決這個問題嗎? –