我正在使用Retrofit 2,SimpleXmlConverter我在创建Soap Request对象时面临一个问题,它基本上是一个包含4个元素子元素的元素,每个子元素都是不同的数据类型.
这是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>
Run Code Online (Sandbox Code Playgroud)
现在,这是我的Android类,Container.java代表将被序列化的Soap Request对象:
@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;
}
Run Code Online (Sandbox Code Playgroud)
根据Simple XML框架文档:
默认情况下,字段的序列化按声明顺序完成.
但是,在Android中,至少在某些情况下,情况并非如此.无论我如何在我的Container类中设置字段声明顺序,输出始终具有相同的元素顺序.这是一个已知的错误,正如其他SO帖子中所报道的那样.
尽管如此,这个问题还是有一个解决方案.该Order注解.阅读Javadoc中的更多内容.
我的问题是Order …