XStream : comment configurer?
Salut,
J'ai une classe que je veux sérialiser :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public class RequestAnswer {
private Map<String, Object> errors;
private Map<String, Object> data;
public RequestAnswer() {
errors = new HashMap<String, Object>();
data = new HashMap<String, Object>();
}
public void addError(String id, Object error) {
errors.put(id, error);
}
public void addData(String id, Object datum) {
data.put(id, datum);
}
} |
Je sérialise de cette manière:
Code:
1 2 3 4
| XStream xstream = new XStream();
//ou new XStream(new DomDriver());, je ne sais pas ce que ça change
xstream.createObjectOutputStream(writer).writeObject(requestAnswer); |
(sans la gestion d'exceptions)
Et j'obtiens le xml suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <object-stream>
<logica.xml.RequestAnswer>
<errors>
<entry>
<string>error1</string>
<string>segfault</string>
</entry>
</errors>
<data>
<entry>
<string>haha</string>
<string>value haha</string>
</entry>
<entry>
<string>hihi</string>
<string>value hihi</string>
</entry>
</data>
</logica.xml.RequestAnswer>
</object-stream> |
Plusieurs choses qui ne vont pas :
(1) Il y a un niveau de trop : je voudrais que le rootNode soit logica.xml.RequestAnswer (ce que je peux passer en paramètre de createObjectOutputStream, mais il y a toujours le niveau correspondant à la classe de l'objet que je sérialise).
(2) Au lieu de
Code:
1 2 3 4
| <entry>
<string>haha</string>
<string>value haha</string>
</entry> |
je voudrais :
Code:
<error id="haha">value haha</error>
C'est possible?
Merci de votre aide.