文字列(XML形式のジェネリックリスト)を返すメソッドを使用して、JavaでWebサービスを作成しました。このWebサービスをAndroidから使用し、この文字列を取得しましたが、数回試行した後、文字列を逆シリアル化しようとすると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>
これはWebサービスのクラスです。
@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);
}
}
__ _ _____編集____ __ _ __ _ __ _ _ _ _ _ _
AndroidでJAXBを使用することはできないようですが、そのためのより優れた/より軽いライブラリがあります。そこで、SimpleXMLを試しました。これは方法です:
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;
}
しかし、この例外が発生しました。オブジェクトにデータを保存できないようです。
11-12 20:30:10.898: I/Error(1058): Element 'Pelicula' does not have a match in class app.cinemexservice.Pelicula at line 3