Android,simple-xml,如何声明元素列表?

Mar*_*coS 12 android simple-framework

我有这个数据结构:

<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>
Run Code Online (Sandbox Code Playgroud)

我从我的网络服务获得.我想使用simple-xml库来实例化Android"Estates","Provider"和"Estate"类.

Class Estates.java:

@Root
public class Estates {
   @ElementList
   private List<Estate> providers;

   @Attribute
   private String version;
}
Run Code Online (Sandbox Code Playgroud)

Class Estate.java:

public class Estate { 
   @Attribute
   private String id;

   @Element(required=false)
   private String description;

   @Element(required=false)
   private Integers size;
}
Run Code Online (Sandbox Code Playgroud)

即,我使用@ElementList(List&lt;Estate&gt; providers)为提供者,但这样我只能使用一个提供者列表(有两个列表,如我的例子,给出:

"ERROR/com.simplexml.XmlActivity(4266):未捕获的异常:org.simpleframework.xml.core.PersistenceException:元素'providers'在第1行声明了两次").

更多,我无法获得"名称"属性.在实践中,我想我必须解雇" List<Estate> providers"方法,但如何更换它?我应该使用"收藏品"吗?

cur*_*zen 18

请注意,simple-xml还允许您设置POJO,以便允许您使列表成为内联列表.换句话说,你可以取消<providersList>元素,但仍然<provider>可以识别s 数组.

当您无法控制所接收的XML结构时,这一点很重要.在您的情况下,如果您按照原始问题坚持XML定义,那么您将对其进行注释:

@ElementList(inline=true)
   private List<Estate> providers;
Run Code Online (Sandbox Code Playgroud)