如何在我的android应用程序中解组列表XML对象。
我使用rest spring进行呼叫休息服务:http://www.springsource.org/spring-android,
和SimpleXml(http://simple.sourceforge.net/)将xml转换为POJO。
我没有从XML转换一个对象的问题。
我试试这个:
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAcceptEncoding(ContentCodingType.ALL);
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new SimpleXmlHttpMessageConverter());
artikli [] response =(artikli[])restTemplate.getForObject(url, artikli[].class);
但是不行。
有一个xml代码:
<kategorijaartiklas>
<kategorijaartikla>
<id>1</id>
<kategorija>kategorija1</kategorija>
</kategorijaartikla>
<kategorijaartikla>
<id>2</id>
<kategorija>kategorija2</kategorija>
</kategorijaartikla>
</kategorijaartiklas>
Java类:
@Root
public class kategorijaartikla {
@Element
private Integer id;
@Element
private String kategorija;
public kategorijaartikla() {
// TODO Add your own initialization code here.
}
public Integer getId() {
return id;
}
public void setId(Integer newId) {
this.id = newId;
}
public String getKategorija() {
return kategorija;
}
public void setKategorija(String newKategorija) {
this.kategorija = newKategorija;
}
}
答案 0 :(得分:1)
这是解决方案:
1 - 为每个列表对象创建一个新类
<强> KategorijeList.java 强>
@Root(name="kategorijaartiklas")
public class KategorijeList {
@ElementList(inline=true)
private List<kategorijaartikla> kategorije;
public List<kategorijaartikla> getEvents() {
return kategorije;
}
public void setEvents(List<kategorijaartikla> k) {
this.kategorije = k;
}
}
2-使用模板类
//to do
以下是调用GET休息服务的代码,数据以XML格式返回,之后在JAVA列表中执行解组。
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("application","xml")));
HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new SimpleXmlHttpMessageConverter());
ResponseEntity<KategorijeList> response =restTemplate.exchange(url, HttpMethod.GET, requestEntity,KategorijeList.class);
KategorijeList vraceniArtikli = response.getBody();