Salut,

J'ai une classe que je veux sérialiser :
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);
	}
 
}
Je sérialise de cette manière:
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);
(sans la gestion d'exceptions)

Et j'obtiens le xml suivant:
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>
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<entry>
    <string>haha</string>
    <string>value haha</string>
</entry>
je voudrais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<error id="haha">value haha</error>
C'est possible?

Merci de votre aide.