Сериализация и десериализация. Записывается только первая строка - C#

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

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

Всем добрый вечер. Подскажите если можете в чем может быть проблема. У меня есть коллекция которую я сериализую в xml фалик. Вроде файлик создается, код его будет ниже. Но когда провожу десириализацию, проходит она без ошибок, но в коллекцию записывается первая строка, но столько раз сколько необходимо было по коллекции. Т.е. сериализировал я 21 элемент и потом 21 элемент записался, только одинаковый Сериализация:
 XmlSerializer xml = new XmlSerializer(typeof(List<Questions>));
            FileStream fs = new FileStream("C:\\name\\proba.xml", FileMode.OpenOrCreate);
            stud_class.xml.Serialize(fs, stud_class.Question);
            fs.Close();
Десириализация:
  XmlSerializer xml = new XmlSerializer(typeof(List<Questions>));
           FileStream fs = new FileStream("C:\\name\\proba.xml", FileMode.OpenOrCreate);
            
                stud_class.Question = (List<Questions>)stud_class.xml.Deserialize(fs);
               
                fs.Close();
<?xml version="1.0"?>
<ArrayOfStudents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Students>
    <Login>rostik</Login>
    <Surname>Виталий</Surname>
    <Firstname>Кулишов</Firstname>
    <Group>КИ-10-4</Group>
    <Count>7</Count>
  </Students>
  <Students>
    <Login>rostik1</Login>
    <Surname>Vitalii</Surname>
    <Firstname>Kulishov</Firstname>
    <Group>KI-10-4</Group>
    <Count>0</Count>
  </Students>
  <Students>
    <Login>asdfdsfa</Login>
    <Surname />
    <Firstname />
    <Group />
    <Count>0</Count>
  </Students>
  <Students>
    <Login>rostik1</Login>
    <Surname>Vitalii</Surname>
    <Firstname>Kulishov</Firstname>
    <Group>KI-10-4</Group>
    <Count>0</Count>
  </Students>
</ArrayOfStudents>
Подскажите, в чем может быть проблема?

Решение задачи: «Сериализация и десериализация. Записывается только первая строка»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.IO;
 
namespace ConsoleApplication28
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Student> list = new List<Student>()
            {
                new Student(){FirstName="Alex",SecondName="Simpson",Group=10},
                new Student(){FirstName="Will",SecondName="Smith",Group=25}
            };
 
            //Сериализуем
            SerializeList(list);
            Console.WriteLine("Operation completed!");
            Console.WriteLine("Deserialized from file: ");
 
            //Десериализуем
            List<Student> ListFromFile = GetStudents();
 
            //Выводим на консоль
            foreach (Student s in ListFromFile)
            {
                Console.WriteLine("First name: {0}, Second name: {1}, Grop: {2}",
                    s.FirstName, s.SecondName, s.Group);
            }
            Console.ReadLine();
        }
        static void SerializeList(List<Student> list)
        {
            XmlSerializer xmlSerial = new XmlSerializer(typeof(List<Student>));
            using (Stream fs = new FileStream(@"C:\MyStudents.xml", FileMode.Create,
                                              FileAccess.Write, FileShare.None))
            {
                xmlSerial.Serialize(fs, list);
            }
        }
        static List<Student> GetStudents()
        {
            List<Student> tempList;
            XmlSerializer xmlSerial = new XmlSerializer(typeof(List<Student>));
            using (Stream fs = new FileStream(@"C:\MyStudents.xml", FileMode.Open,
                                              FileAccess.Read, FileShare.None))
            {
                tempList = (List<Student>)xmlSerial.Deserialize(fs);
            }
            return tempList;
        }
    }
    [Serializable]
    public class Student
    {
        public string FirstName { get; set; }
        public string SecondName { get; set; }
        public int Group { get; set; }
    }
}

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


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

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

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