私のアプリケーションの 1 つで、thegamesdb.net の API を使用していくつかのゲームのカバー画像をダウンロードしています。XML ファイルから情報を取得するために、 Simple 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);
どうしたの?
更新: Simple Site のチュートリアルは、注釈が適切に設定されていないため少し不完全であることが判明しました。これらの注釈はすべての問題を解決し、すべての警告は「正常」であり、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;
}
}