[dé]sérialisation et héritage


Bonjour,

voici ma problématique (simplifiée), je voudrais [dé]sérialiser deux listes d'objets sachant que la 2e liste référence des objets de la 1ere liste, mais avec des objets d'une classe-fille.

Ex: j'ai une liste de Véhicules et une liste de Voitures qui héritent de Véhicules.
La liste de Voitures référencent les données de la liste de Véhicules :

List<Véhicule>
véhicule1.type = "voiture"
véhicule1.nbRoues = 4
véhicule1.couleur = "blanc"
véhicule1.propriétaire = Propriétaire1
véhicule1.probleme = null

List<Voiture>
véhicule1.type = "voiture"
véhicule1.nbRoues = 4
véhicule1.couleur = "blanc"
véhicule1.propriétaire = Propriétaire1
véhicule1.probleme = null
voiture1.chassis = "Coupé"

Le problème est que lors de la sérialisation, on perd la notion d'héritage Véhicule/Voiture, et le fichier xml présentes les objets de la manière suivante :
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
 
<list>
     <Véhicule>
          <type>voiture</type>
          <nbRoues>4</nbRoues>
          ...
          <probleme />
     </Véhicule>
</list>
<list>
     <Voiture>
          <type reference="Véhicule[0].type" />
          <nbRoues reference="Véhicule[0].nbRoues" />
          ...
          <chassis>Coupé</chassis>
     <Voiture>
</list>
Ce que je voudrais, c'est quelque chose comme ça, l'objet-fils référençant l'objet-mère et les valeurs de ses attributs propres :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
...
<list>
     <Voiture reference="Véhicule[0]">
          <chassis>Coupé</chassis>
     </Véhicule>
</list>
On voit mieux le problème si on valorise voiture1.probleme, c'est-à-dire un attribut-mère via l'objet-fils, le véhicule1.probleme n'est pas valorisé, et on aura :
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
<list>
     <Véhicule>
          <type>voiture</type>
          <nbRoues>4</nbRoues>
          ...
          <probleme />
     </Véhicule>
</list>
<list>
     <Voiture>
          <type reference="Véhicule[0].type" />
          <nbRoues reference="Véhicule[0].nbRoues" />
          ...
          <chassis>Coupé</chassis>
          <probleme>qqch</probleme>
     <Voiture>
</list>
Y-at'il une solution à ce problème, ou alors peut être que j'ai raté un détail qui rend mon problème insolvable. (sauf traitement des données de manière empirique, à chaque désérialisation, je peux retrouver qui référence qui et réinstancier les bons objets)

PS: si je ne suis pas clair, n'hésitez pas à demander des précisions.