.NET 4.x При сериализации xml файл заполняется неккоректно - C#

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

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

Всем привет. Пишу небольшую программку для личных нужд. Хранение данных предусматриваю в xml-файле. Сами данные представляют собой класс с атрибутом Serializable. При сериализации в файле происходят какие-то глюки Сам класс:
[Serializable]
    public class Project : INotifyPropertyChanged
    {
        // Declare the event
        public event PropertyChangedEventHandler PropertyChanged;
        // Create the OnPropertyChanged method to raise the event
        protected void OnPropertyChanged(string name)
        {
            var handler = PropertyChanged;
            handler?.Invoke(this, new PropertyChangedEventArgs(name));
        }
 
        // id
        [XmlAttribute]
        public int Id { get; set; }
        // short name
        private string _shortName;
        [XmlAttribute]
        public string ShortName { get { return _shortName; } set { _shortName = value; OnPropertyChanged("ShortName"); } }
        // project type
        private string _projectType;
        [XmlAttribute]
        public string ProjectType { get { return _projectType; } set { _projectType = value; OnPropertyChanged("ProjectType"); } }
        // project name
        private string _projectName;
        [XmlAttribute]
        public string ProjectName { get { return _projectName; } set { _projectName = value; OnPropertyChanged("ProjectName"); } }
        // getting date
        private DateTime _gettingDate;
        [XmlAttribute]
        public DateTime GettingDate { get { return _gettingDate; } set { _gettingDate = value; OnPropertyChanged("GettingDate"); } }
        // start date
        private DateTime _startDate;
        [XmlAttribute]
        public DateTime StartDate { get { return _startDate; } set { _startDate = value; OnPropertyChanged("StartDate"); } }
        // end date
        private DateTime _endDate;
        [XmlAttribute]
        public DateTime EndDate { get { return _endDate; } set { _endDate = value; OnPropertyChanged("EndDate"); } }
    }
При открытии программы происходит десериализация с биндингом на DataGrid
// on loaded
private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
{
    var formatter = new XmlSerializer(typeof(List<Project>));
    using (var fs = new FileStream(_xmlFile, FileMode.OpenOrCreate))
    {
        try
        {
            _projects = formatter.Deserialize(fs) as List<Project>;
        }
        catch (Exception)
        {
            _projects = new List<Project>();
        }
    }
    BindToDataGrid();
}
При работе с DataGrid (изменении данных) и при закрытии программы (окна) происходит сериализация в файл:
private void SaveToFile()
{
    try
    {
        var formatter = new XmlSerializer(typeof (List<Project>));
        using (var fs = new FileStream(_xmlFile, FileMode.OpenOrCreate))
        {
            formatter.Serialize(fs, _projects);
        }
    }
    catch (Exception exception)
    {
        MessageBox.Show(exception.Message);
    }
}
В общем - все по самым простым примерам. Однако, по неизвестным мне причинам, ибо не происходит исключений, файл записывается некорректно. Реально, с какими-то глюками. Типа так:
<?xml version="1.0"?>
<ArrayOfProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />  <Project Id="1" ProjectType="ППТ и ПМТ" GettingDate="2016-10-04T11:23:15.6274011+03:00" StartDate="2016-10-04T11:23:15.6274011+03:00" EndDate="2016-10-04T11:23:15.6274011+03:00" />
  <Project Id="2" ProjectType="Ремонт" GettingDate="2016-10-04T11:24:04.2767522+03:00" StartDate="2016-10-04T11:24:04.2767522+03:00" EndDate="2016-10-04T11:24:04.2767522+03:00" />
  <Project Id="3" GettingDate="2016-10-05T00:00:00" StartDate="2016-10-04T11:24:12.7156322+03:00" EndDate="2016-10-04T11:24:12.7156322+03:00" />
</ArrayOfProject>rrayOfProject>
Пробовал погуглить проблему, но не находил подобных тем

Решение задачи: «.NET 4.x При сериализации xml файл заполняется неккоректно»

textual
Листинг программы
</ArrayOfProject>rrayOfProject>

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


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

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

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