Ho creato un servizio web in java con un metodo che restituisce una stringa (un elenco generico in formato XML). Consumo questo servizio web da Android e ottengo questa stringa, ma dopo diversi tentativi l'emulatore Android si blocca solo quando si tenta di deserializzare la stringa. Questo è un esempio per la stringa ottengo:Deserialize/Unmarshal Elenco generico da XML a elenco in Android
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<peliculas>
<pelicula>
<id>18329</id>
<poster>http://cache-cmx.netmx.mx/image/muestras/5368.rrr.jpg</poster>
<titulo>007 Operaci&oacute;n Skyfall</titulo>
</pelicula>
...
</peliculas>
Questa è la classe nel webservice:
@XmlRootElement
public class Peliculas{
@XmlElement(name="pelicula")
protected List<Pelicula> peliculas;
public Peliculas(){ peliculas = new ArrayList<Pelicula>();}
public Peliculas(List<Pelicula> pe){
peliculas = pe;
}
public List<Pelicula> getList(){
return peliculas;
}
public void add(Pelicula pelicula) {
peliculas.add(pelicula);
}
}
__ _ __ _ __EDIT_ __ _ __ _ __ _ __ _ _
Sembra come non è possibile utilizzare JAXB con Android, e non c'è migliore/librerie più leggeri per questo. così ho provato Simple XML. Questo è il metodo:
public Peliculas unmarshal(String xml) throws Exception{
Peliculas peliculas = new Peliculas();
Serializer serializer = new Persister();
StringBuffer xmlStr = new StringBuffer(xml);
peliculas = serializer.read(Peliculas.class, (new StringReader(xmlStr.toString())) );
return peliculas;
}
ma ottengo questa eccezione, sembra che non è possibile salvare i dati in oggetto:
11-12 20:30:10.898: I/Error(1058): Element 'Pelicula' does not have a match in class app.cinemexservice.Pelicula at line 3
Sembra che non si possa usare JAXB con Android, e ci sono librerie migliori/più leggere per quello ... quindi ho provato Simple XML. – Pundia