在我的一个应用程序中,我使用 thegamesdb.net 的 API 来下载一些游戏的封面图片。为了从 XML 文件中获取信息,我正在尝试实现简单的 XML库来反序列化。
这是我的示例查询结果(name=Splatterhouse,platform=TurboGrafx 16):
<?xml version="1.0" encoding="UTF-8" ?>
<Data>
<Game>
<id>3776</id>
<GameTitle>Splatterhouse</GameTitle>
<ReleaseDate>01/01/1990</ReleaseDate>
<Platform>TurboGrafx 16</Platform>
</Game>
</Data>
这就是我在java中实现我的类的方式:
@Root
public class Data{
@ElementList(inline=true)
private List<Game> list; //This is correct, it's only in the example that I've only one result.
public List<Game> getGames(){
return list;
}
}
@Root
public class Game{
@Element
private int id;
@Element
private String GameTitle;
@Element(required=false)
private String ReleaseDate;
@Element(required=false)
private String Platform;
public String getTitle(){
return GameTitle;
}
public int getId(){
return id;
}
}
要从 xml 文件中读取,我调用序列化程序:
String xml = getXmlFromUrl(URL);
Serializer serializer = new Persister();
Data data = serializer.read(Data.class, xml);
怎么了?
更新:简单站点上的教程有点不完整,因为它们没有正确设置注释,这些注释解决了我所有的问题,加上所有警告都是“正常的”,很简单地说 jaxp 不存在android 并且将使用其他工具(XmlPullParser
?)。
这是我的正确代码:
@Root(name = "Data")
public class Data {
@ElementList(inline = true, required = false)
private List<Game> list = new ArrayList<Game>();
public List<Game> getGames() {
return list;
}
}
@Root(name = "Game", strict = false)
public class Game {
@Element(name = "id")
private int id;
@Element(name = "GameTitle")
private String GameTitle;
public String getTitle() {
return GameTitle;
}
public int getId() {
return id;
}
}