1 pièce(s) jointe(s)
Problème de dé-serialisation d'une liste
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 :
Code:
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;
} |
Voici le code de dé-serialisation :
Code:
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);
}
} |
Le code de serialisation :
Code:
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);
}
} |
Sachant que RecettesFromXml est définit comme suit :
Code:
public List<Recette> RecettesFromXml;
Après l'enregistrement de deux recettes test, voici le contenu du XML :
Code:
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> |
(le ArrayOfRecette commence à m'agacer :furax:)
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 !!