Salut,
J'ai une classe que je veux sérialiser :
Je sérialise de cette manière:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
(sans la gestion d'exceptions)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
Et j'obtiens le xml suivant:
Plusieurs choses qui ne vont pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
(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
je voudrais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <entry> <string>haha</string> <string>value haha</string> </entry>
C'est possible?
Code : Sélectionner tout - Visualiser dans une fenêtre à part <error id="haha">value haha</error>
Merci de votre aide.
Partager