Изменение данных в XML файле

177
30 мая 2018, 14:30

Достаю из xml файла список учеников, хочу удалить одного из них и записать изменения. Вот так это выглядит:

 public void DeleteStudent(int studentId)
    {
        string grade = GradeNumbers.SelectedValue.ToString() + GradeLetters.SelectedValue.ToString();
        DeserializeStudents(grade);
        Student student = students.FirstOrDefault(st => st.Id == studentId);
        if (student != null)
        {
            students.Remove(student);
            SerializeStudents(grade);
        }                
    }
public void DeserializeStudents(string grade)
    {
        using (FileStream stream = new FileStream($"students{grade}.xml", FileMode.OpenOrCreate))
        {
            try
            {
                students = (List<Student>)formatter.Deserialize(stream);
            }
            catch
            {
                students = new List<Student>();
            }
        }
    }
public void SerializeStudents(string grade)
    {
        using (FileStream stream = new FileStream($"students{grade}.xml", FileMode.OpenOrCreate))
        {
            formatter.Serialize(stream, students);
        }
    }

XML до удаления:

<?xml version="1.0"?> 
<ArrayOfStudent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
  <Student> 
    <Firstname>Семен</Firstname> 
    <Lastname>Семенов</Lastname> 
    <Patronymic>Семёнович</Patronymic> 
    <TelephoneNumber>123</TelephoneNumber> 
    <Id>3</Id> 
    <Birthday>2002-02-02T00:00:00</Birthday> 
    <Address> 
      <Street>123</Street> 
      <House>123</House> 
      <Flat>123</Flat> 
    </Address> 
    <Grade> 
      <Id>0</Id> 
      <Number>11</Number> 
      <Letter>1040</Letter> 
    </Grade> 
    <Mother> 
      <Firstname>13</Firstname> 
      <Lastname>13</Lastname> 
      <Patronymic>13</Patronymic> 
      <TelephoneNumber>13</TelephoneNumber> 
    </Mother> 
    <Father> 
      <Firstname>123</Firstname> 
      <Lastname>123</Lastname> 
      <Patronymic>13</Patronymic> 
      <TelephoneNumber>13</TelephoneNumber> 
    </Father> 
  </Student> 
</ArrayOfStudent>

После вызова метода удаления:

<?xml version="1.0"?> 
<ArrayOfStudent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />  <Student> 
    <Firstname>Семен</Firstname> 
    <Lastname>Семенов</Lastname> 
    <Patronymic>Семёнович</Patronymic> 
    <TelephoneNumber>123</TelephoneNumber> 
    <Id>3</Id> 
    <Birthday>2002-02-02T00:00:00</Birthday> 
    <Address> 
      <Street>123</Street> 
      <House>123</House> 
      <Flat>123</Flat> 
    </Address> 
    <Grade> 
      <Id>0</Id> 
      <Number>11</Number> 
      <Letter>1040</Letter> 
    </Grade> 
    <Mother> 
      <Firstname>13</Firstname> 
      <Lastname>13</Lastname> 
      <Patronymic>13</Patronymic> 
      <TelephoneNumber>13</TelephoneNumber> 
    </Mother> 
    <Father> 
      <Firstname>123</Firstname> 
      <Lastname>123</Lastname> 
      <Patronymic>13</Patronymic> 
      <TelephoneNumber>13</TelephoneNumber> 
    </Father> 
  </Student> 
</ArrayOfStudent>

Он немного изменяется, вообщем становится нечитаемым. Почему так происходит и как образом правильно перезаписывать данные в XML файл?

READ ALSO
c# проблема с подключением проекта

c# проблема с подключением проекта

У меня в solution имеется два проектаОдин textEdit, второй textEdit

172
Вывод изображения в представлении ASP.NET MVC

Вывод изображения в представлении ASP.NET MVC

В контроллере у меня есть два метода, Get и PostВ представлении первого создана форма, в которой пользователь загружает изображение и текстовый...

262
Как получить список всех полей значимых типов у класса?

Как получить список всех полей значимых типов у класса?

Недавно открыл для себя даппер и теперь пишу свой репозиторий(велосипед) для негоВ ходе написания встала необходимость получить список всех...

190
list.sort в C# как list.sort в Python

list.sort в C# как list.sort в Python

python: есть list tuple-ов (каждый tuple в свою очередь состоит из 3-х int-ов) при сортировке данных методом listsort() вначале лист сортируется по первому параметру...

197