2012-11-30 61 views
1

在我的android應用程序中如何解組列表XML對象。unmarshalling xml如何列出對象

我用休息彈簧調用REST服務: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

這裏是解決方案:

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 

這裏是呼叫得到休息服務代碼,數據以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();