Bonjour,
Voici mon problème : je ne parviens pas à dé-serialiser une liste de recettes (contenant une liste d'ingrédients, contenue dans un XML). Vous trouverez le message d'erreur en PJ.
J'ai eu beau parcourir les forums, rien n'a pu me faire résoudre ce problème pénible ..
Voici mon code métier :
Voici le code de dé-serialisation :
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
21
22
23
24
25
26
27 [XmlRoot("Recettes", IsNullable = false)] public class Recette { [XmlElement] public string NomRecette; [XmlElement] public string CategorieRecette; [XmlArray("Ingredients")] public Ingredient[] Ingredients; [XmlElement] public string PreparationRecette; [XmlElement] public string CuissonRecette; //public bool AjouterRecette } public class Ingredient { [XmlElement] public string NomIngredient; [XmlElement] public double QuantiteIngredient; [XmlElement] public string UniteIngredient; }
Le code de serialisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public void DeSerialiserXML() { try { RecettesFromXml = (List<Recette>)serializer.Deserialize(FLuxES.Stream_lecture); FLuxES.liberer_stream_lecture(); } catch (System.InvalidOperationException e) { MessageBox.Show("Echec lors de la lecture des recettes \r \n" + e.ToString(), "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
Sachant que RecettesFromXml est définit comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 private void SerialiserXML() { try { serializer.Serialize(FLuxES.Stream_ecriture, RecettesFromXml); FLuxES.liberer_stream_ecriture(); } catch (System.InvalidOperationException e) { MessageBox.Show("Echec lors de la sauvegarde des recettes \r \n" + e.ToString(), "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
Après l'enregistrement de deux recettes test, voici le contenu du XML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part public List<Recette> RecettesFromXml;
(le ArrayOfRecette commence à m'agacer
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 <?xml version="1.0" encoding="utf-8"?> <ArrayOfRecette xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Recette> <NomRecette>Recette_test</NomRecette> <CategorieRecette>Entrée</CategorieRecette> <Ingredients> <Ingredient> <NomIngredient>Carotte</NomIngredient> <QuantiteIngredient>100</QuantiteIngredient> <UniteIngredient>g</UniteIngredient> </Ingredient> <Ingredient> <NomIngredient>Carotte</NomIngredient> <QuantiteIngredient>100</QuantiteIngredient> <UniteIngredient>g</UniteIngredient> </Ingredient> </Ingredients> <PreparationRecette>Blabla</PreparationRecette> <CuissonRecette>Blabla</CuissonRecette> </Recette> <Recette> <NomRecette>Recette_test_2</NomRecette> <CategorieRecette>Entrée</CategorieRecette> <Ingredients> <Ingredient> <NomIngredient>Carotte</NomIngredient> <QuantiteIngredient>200</QuantiteIngredient> <UniteIngredient>g</UniteIngredient> </Ingredient> <Ingredient> <NomIngredient>Carotte</NomIngredient> <QuantiteIngredient>200</QuantiteIngredient> <UniteIngredient>g</UniteIngredient> </Ingredient> </Ingredients> <PreparationRecette>Blabla_2</PreparationRecette> <CuissonRecette>Blabla_2</CuissonRecette> </Recette> </ArrayOfRecette>)
Au démarrage de l'application, j'essaie de charger les recettes ... et du coup badaboum à la dé-serialisation ...
Qu'en dites-vous ?
Où peut bien se trouver le bug qui fait tout péter ? En tout cas, je ne m'en sors pas.
Merci par avance pour vos réponses chers passionés !!
Partager