我有这个数据结构:
<estates version="0.1"> <provider name="Foo"> <estate id="12345678"> <description>aaa</description> <size>300</size> </estate> <estate id="12345679"> <description>bbb</description> <size>450</size> </estate> </provider> <provider name="Bar"> <estate id="987654321"> <description>yyy</description> <size>100</size> </estate> <estate id="987654320"> <description>zzz</description> <size>240</size> </estate> </provider> </estates>
我从我的网络服务得到的.
我想使用simple-xml库来实例化Android“Estates”,“Provider”和“Estate”类.
Class Estates.java:
@Root public class Estates { @ElementList private List<Estate> providers; @Attribute private String version; }
Class Estate.java:
public class Estate { @Attribute private String id; @Element(required=false) private String description; @Element(required=false) private Integers size; }
也就是说,我使用一个@ElementList(List< Estate>提供者)作为提供者,但是我只能使用一个提供者列表(有两个列表,如我的例子所示:“ERROR / com.simplexml.XmlActivity(4266 ):未捕获异常:org.simpleframework.xml.core.PersistenceException:元素“提供程序在第1行声明两次”).更多,我不能得到“名称”属性.在实践中,我想我必须驳斥“列表提供者”的做法,但如何替换呢?我应该使用“收藏”吗?
解决方法
请注意,simple-xml还允许您以这样的方式设置POJO,以允许您将列表放在一起.换句话说,你可以免除< providersList>元素,并且仍然可以识别< provider>的数组.
当您无法控制正在接收的XML的结构时,这很重要.在您的情况下,如果您按照原始问题坚持XML定义,则可以对其进行注释:
@ElementList(inline=true) private List<Estate> providers;