Ошибка при десериализации - 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; }
    }
}

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


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

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

8   голосов , оценка 3.875 из 5
Похожие ответы