Ошибка при десериализации - 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; }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д