J'essaye de désérialiser un fichier XML en objets Java en utilisant simpleXML. Tout fonctionnait bien jusqu'à ce que je devais utiliser un ElementMap. Cela fait partie de mon fichier XML:Désérialise les éléments XML en Java Map
<piece composer="Me" date="Yesterday" title="Important work">
<editions>
<edition name="My Name" date="2015" description="A single page">
<pages>
<page fileName="page01.jpg" />
</pages>
</edition>
<edition name="My Name again" date="2015" description="Another single page">
<pages>
<page fileName="page01.jpg" />
</pages>
</edition>
</editions>
<layers>
<layer name="Annotations" color="#FF0000" description="Empty" id="anno" />
<layer name="Information" color="#00FF00" description="Empty" id="info" />
</layers>
</piece>
La classe Java correspondant ressemble à ceci:
@Root
public class Piece {
@Attribute
private String composer;
@Attribute
private String title;
@Attribute
private String date;
@ElementList
private List<Edition> editions;
@ElementMap(key = "id", attribute = true) // Relevant
private Map<String, Layer> layers; // Lines
public static Piece loadFromAsset(Context context, String fileName) throws Exception {
Serializer serial = new Persister();
return serial.read(Piece.class, context.getResources().getAssets().open(fileName));
}
}
Et enfin la classe de couche:
public class Layer {
@Attribute
private String id;
@Attribute
private String name;
@Attribute
private String description;
@Attribute
private String color;
}
Après chargement du fichier XML du La carte contient les deux clés, mais elles pointent toutes les deux vers null
au lieu des objets de calque réels.
Merci beaucoup! J'ai fini par utiliser votre méthode A avec à peu près exactement la même syntaxe. Les autres solutions ne fonctionnent pas moins, mais simple est belle. ;-) – sonovice