Ошибка при десериализации - C#

Узнай цену своей работы

Формулировка задачи:

Пробую считать XML документ. в try catch выдаёт ошибку - There is an Error in XML document (2,2) что бы это могло значить ?
Листинг программы
  1. XmlSerializer formatter = new XmlSerializer(typeof(Student[]));
  2.  
  3. using (FileStream fs = new FileStream("Stud.studXml", FileMode.OpenOrCreate))
  4. {
  5. Student[] newstudent = (Student[])formatter.Deserialize(fs);
  6. foreach (Student p in newstudent)
  7. {
  8. Console.WriteLine("Ид: {0}\n Фамилия: {1}\n Пол: {2}\nДень рожд.: {3}\n Курс: {4}\nГруппа: {5}\nСтипендия: {6} ",
  9. p.Id, p.Surname, p.Gender, p.BirthDate, p.Course, p.Group, p.Scholarship);
  10. Console.WriteLine("\n");
  11. spisok1.Add(p);
  12. Console.WriteLine("\n");
  13. }
  14. }
  15. XmlSerializer formatter2 = new XmlSerializer(typeof(Marks[]));
  16. using (FileStream fs2 = new FileStream("Stud.studXml", FileMode.OpenOrCreate))
  17. {
  18. try
  19. {
  20. Marks[] newMark = (Marks[])formatter2.Deserialize(fs2);
  21. }
  22. catch (Exception exc)
  23. {
  24. Console.WriteLine(exc.Message);
  25. }
  26. //foreach (Marks m in newMark)
  27. //{
  28. // Console.WriteLine("Предмет: {0}\n Оценка{1}", m.Subject, m.Level);
  29. //}
  30. }

Решение задачи: «Ошибка при десериализации»

textual
Листинг программы
  1. using System;
  2. using System.Xml.Serialization;
  3. using System.IO;
  4. using System.Collections.Generic;
  5.  
  6. namespace XMLSerializator
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             List<Student> students = new List<Student>();
  13.             #region Information about student
  14.             List<Mark> marks = new List<Mark>();
  15.             marks.Add(new Mark
  16.             {
  17.                 Subject = "Мат. анализ",
  18.                 Level = 5
  19.             });
  20.             marks.Add(new Mark
  21.             {
  22.                 Subject = "Алгебра и геометрия",
  23.                 Level = 4
  24.             });
  25.             students.Add(new Student
  26.             {
  27.                 Id = 1,
  28.                 Surname = "Иванов И.И.",
  29.                 Gender = 'M',
  30.                 BirthDate = "1991-03-12T00:00:00",
  31.                 Course = 1,
  32.                 Group = 2,
  33.                 Scholarship = true,
  34.                 Marks = marks
  35.             });
  36.             students.Add(new Student
  37.             {
  38.                 Id = 1,
  39.                 Surname = "Иванов И.И.",
  40.                 Gender = 'M',
  41.                 BirthDate = "1991-03-12T00:00:00",
  42.                 Course = 1,
  43.                 Group = 2,
  44.                 Scholarship = true,
  45.                 Marks = marks
  46.             });
  47.             #endregion
  48.  
  49.  
  50.             SaveAsXmlFormat(students, "studentList.xml");
  51.  
  52.             List<Student> newList = LoadFromXmlFormat<List<Student>>("studentList.xml");
  53.             foreach (var item in newList)
  54.                Console.WriteLine(item.ToString());
  55.             Console.ReadLine();
  56.         }
  57.  
  58.         static void SaveAsXmlFormat(object objGraph, string fileName)
  59.         {
  60.             XmlSerializer xmlFortmat = new XmlSerializer(typeof(List<Student>), new Type[] { typeof(List<Mark>) });
  61.             using (Stream fStream = new FileStream(fileName, FileMode.OpenOrCreate))
  62.             {
  63.                 xmlFortmat.Serialize(fStream, objGraph);
  64.             }
  65.             Console.WriteLine("=> Saved in XML format!");
  66.         }
  67.         static T LoadFromXmlFormat<T>(string fileName) where T : new()
  68.         {
  69.             T obj = new T();
  70.             XmlSerializer xmlFortmat = new XmlSerializer(typeof(List<Student>), new Type[] { typeof(List<Mark>) });
  71.             using (Stream fStream = new FileStream(fileName, FileMode.OpenOrCreate))
  72.             {
  73.                 obj = (T)xmlFortmat.Deserialize(fStream);
  74.             }
  75.             Console.WriteLine($"=> Load from XML file {fileName}!");
  76.             return obj;
  77.         }
  78.     }
  79.  
  80.     [Serializable]
  81.     public class Student
  82.     {
  83.         public int Id { get; set; }
  84.         public string Surname { get; set; }
  85.         public char Gender { get; set; }
  86.         public string BirthDate { get; set; }
  87.         public int Course { get; set; }
  88.         public int Group { get; set; }
  89.         public bool Scholarship { get; set; }
  90.         public List<Mark> Marks = new List<Mark>();
  91.  
  92.         public override string ToString()
  93.         {
  94.             return string.Format($"Ид: {Id}\n Фамилия: {Surname}\n Пол: {Gender}\nДень рожд.: {BirthDate}\n Курс: {Course}\nГруппа: {Group}\nСтипендия: {Scholarship}");
  95.         }
  96.     }
  97.     [Serializable]
  98.     public class Mark
  99.     {
  100.         public string Subject { get; set; }
  101.         public int Level { get; set; }
  102.     }
  103. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы