【发布时间】:2012-11-11 20:08:54
【问题描述】:
我在 java 中使用返回字符串(XML 格式的通用列表)的方法创建了一个 Web 服务。我从 Android 使用这个 web 服务,我得到了这个字符串,但是经过几次尝试,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>
这是网络服务中的类:
@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,并且有更好/更轻的库。所以我尝试了简单的 XML。方法是这样的:
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
【问题讨论】:
标签: java android web-services jaxb marshalling