gpt4 book ai didi

java - 将通用列表从 XML 反序列化/解码为 Android 中的列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:01 24 4
gpt4 key购买 nike

我在 java 中创建了一个 web 服务,其方法返回一个字符串(XML 格式的通用列表)。我从 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&amp;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);
}
}

________编辑______________

似乎您不能将 JAXB 与 Android 一起使用,并且有更好/更轻的库。所以我尝试了简单 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

最佳答案

我认为你做得对,试试 API 中给出的这段代码。

JAXBContext jc = JAXBContext.newInstance( "add your class's full qualified class name here" );
Unmarshaller u = jc.createUnmarshaller();
Object o = u.unmarshal( xmlSource );

我认为您可以将 Object o 转换为您的类型。请引用这个。 http://jaxb.java.net/nonav/2.2.4/docs/api/javax/xml/bind/Unmarshaller.html

关于java - 将通用列表从 XML 反序列化/解码为 Android 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13334956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com