Bonjour

J'ai un problème de serialisation que j'essaye de comprendre
Je vais essayer d'expliquer sans etaler trop de code

Je dispose d'une classe C_PrintSettings que je parviens a serialiser et deserialize automatiquement dans un fichier que je force ! (voir code ci dessous)

Par contre si j'utilise la meme technique en passant par un XmlWriter et un XmlReader qui emballent d'autres choses dans le fichier sérializé je retrouve ma classe tres correctement serializée dans le fichier global mais je ne parviens pas a la désérializer (mon XmlDeserialize.deserialize renvoie une exception)

Je peux imaginer que c'est parce que le deserialize ne voit pas bien ou commencer ou bien ou s'arreter dans le fichier général mais je ne vois pas ce qu'il faut faire pour y arriver

Merci aux connaisseurs de ce sujt que j'essaye de bien digérer !




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
40
    // *******************************************************************************************
    private void SaveSetting()
    {
      XmlSerializer xs;
      XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
      ns.Add("", "");
 
      StreamWriter sw;
      string TemplateFile = "d:/tmp/xxx.xml";
      if (TemplateFile.Length <= 0)
      {
        return;
      }
      xs = new XmlSerializer(typeof(C_PrintSettings));
      using (sw = new StreamWriter(TemplateFile, false, Encoding.Default))
      {
        xs.Serialize(sw, Document.PrintSettings,ns);
        sw.Close();
      }
    }
 
    private void LoadSetting()
    {
      C_PrintSettings ps = new C_PrintSettings();
      StreamReader sr;
      sr = new StreamReader("d:/tmp/xxx.xml", Encoding.Default);
      XmlSerializer xs;
      XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
      ns.Add("", "");
 
      xs = new XmlSerializer(typeof(C_PrintSettings));
      try
      {
        ps = (C_PrintSettings)xs.Deserialize(sr);
      }
      catch (Exception e)
      {
          MessageBox.Show("Erreur", "Error");
      }
    }