如何解组xml List对象

时间:2012-11-30 22:50:50

标签: android spring unmarshalling

如何在我的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;
    }
}

1 个答案:

答案 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();