Ошибка при десериализации - C#
Формулировка задачи:
Пробую считать XML документ.
в try catch выдаёт ошибку - There is an Error in XML document (2,2)
что бы это могло значить ?
XmlSerializer formatter = new XmlSerializer(typeof(Student[])); using (FileStream fs = new FileStream("Stud.studXml", FileMode.OpenOrCreate)) { Student[] newstudent = (Student[])formatter.Deserialize(fs); foreach (Student p in newstudent) { Console.WriteLine("Ид: {0}\n Фамилия: {1}\n Пол: {2}\nДень рожд.: {3}\n Курс: {4}\nГруппа: {5}\nСтипендия: {6} ", p.Id, p.Surname, p.Gender, p.BirthDate, p.Course, p.Group, p.Scholarship); Console.WriteLine("\n"); spisok1.Add(p); Console.WriteLine("\n"); } } XmlSerializer formatter2 = new XmlSerializer(typeof(Marks[])); using (FileStream fs2 = new FileStream("Stud.studXml", FileMode.OpenOrCreate)) { try { Marks[] newMark = (Marks[])formatter2.Deserialize(fs2); } catch (Exception exc) { Console.WriteLine(exc.Message); } //foreach (Marks m in newMark) //{ // Console.WriteLine("Предмет: {0}\n Оценка{1}", m.Subject, m.Level); //} }
Решение задачи: «Ошибка при десериализации»
textual
Листинг программы
using System; using System.Xml.Serialization; using System.IO; using System.Collections.Generic; namespace XMLSerializator { class Program { static void Main(string[] args) { List<Student> students = new List<Student>(); #region Information about student List<Mark> marks = new List<Mark>(); marks.Add(new Mark { Subject = "Мат. анализ", Level = 5 }); marks.Add(new Mark { Subject = "Алгебра и геометрия", Level = 4 }); students.Add(new Student { Id = 1, Surname = "Иванов И.И.", Gender = 'M', BirthDate = "1991-03-12T00:00:00", Course = 1, Group = 2, Scholarship = true, Marks = marks }); students.Add(new Student { Id = 1, Surname = "Иванов И.И.", Gender = 'M', BirthDate = "1991-03-12T00:00:00", Course = 1, Group = 2, Scholarship = true, Marks = marks }); #endregion SaveAsXmlFormat(students, "studentList.xml"); List<Student> newList = LoadFromXmlFormat<List<Student>>("studentList.xml"); foreach (var item in newList) Console.WriteLine(item.ToString()); Console.ReadLine(); } static void SaveAsXmlFormat(object objGraph, string fileName) { XmlSerializer xmlFortmat = new XmlSerializer(typeof(List<Student>), new Type[] { typeof(List<Mark>) }); using (Stream fStream = new FileStream(fileName, FileMode.OpenOrCreate)) { xmlFortmat.Serialize(fStream, objGraph); } Console.WriteLine("=> Saved in XML format!"); } static T LoadFromXmlFormat<T>(string fileName) where T : new() { T obj = new T(); XmlSerializer xmlFortmat = new XmlSerializer(typeof(List<Student>), new Type[] { typeof(List<Mark>) }); using (Stream fStream = new FileStream(fileName, FileMode.OpenOrCreate)) { obj = (T)xmlFortmat.Deserialize(fStream); } Console.WriteLine($"=> Load from XML file {fileName}!"); return obj; } } [Serializable] public class Student { public int Id { get; set; } public string Surname { get; set; } public char Gender { get; set; } public string BirthDate { get; set; } public int Course { get; set; } public int Group { get; set; } public bool Scholarship { get; set; } public List<Mark> Marks = new List<Mark>(); public override string ToString() { return string.Format($"Ид: {Id}\n Фамилия: {Surname}\n Пол: {Gender}\nДень рожд.: {BirthDate}\n Курс: {Course}\nГруппа: {Group}\nСтипендия: {Scholarship}"); } } [Serializable] public class Mark { public string Subject { get; set; } public int Level { get; set; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д