Как я могу сохранить свои объекты и отобразить их, используя XML вместо .txt? - PullRequest
0 голосов
/ 05 мая 2020

Как я могу сохранить все мои данные в локальном XML файле? Я хочу иметь возможность загружать, сохранять и редактировать разных учеников. Я использовал файл .txt для сохранения всех данных в сочетании с Json, однако теперь я хотел бы заменить его на XML. Как мне это сделать?

Ура

PS: Я использую C# Visual Studio

public partial class Form1 : Form
    {

        string FilePath = (@"d:\Entwicklung\dotNET\HKC\Übungsaufgaben\WindowsFormsApp2\StudentList.txt");
        BindingList<Student> StudentCollection = new BindingList<Student>();

        private void btnLaden_Click(object sender, EventArgs e)
        {
            Student StudentLoad = (Student)cbxStudentIDs.SelectedItem;

            txtStudentID.Text = StudentLoad.ID;
            txtFirstName.Text = StudentLoad.FirstName;
            txtLastName.Text = StudentLoad.LastName;
            txtSchoolClass.Text = StudentLoad.Schoolclass;
            nudAge.Value = StudentLoad.Age;
            nudHeight.Value = StudentLoad.Height;
            cbxGender.Text = StudentLoad.Gender;
        }

        private void btnAddStudent_Click(object sender, EventArgs e)
        {
            Student StudentSave = new Student
            {
                ID = txtStudentID.Text,
                FirstName = txtFirstName.Text,
                LastName = txtLastName.Text,
                Age = nudAge.Value,
                Height = nudHeight.Value,
                Schoolclass = txtSchoolClass.Text,
                Gender = cbxGender.Text,
            };

            cbxStudentIDs.DataSource = StudentCollection;
            cbxStudentIDs.DisplayMember = "ID";
            StudentCollection.Add(item: StudentSave);

        }

        public class Student
        {
            //Eigenschaften
            public string ID { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public decimal Age { get; set; }
            public decimal Height { get; set; }
            public string Schoolclass { get; set; }
            public string Gender { get; set; }

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string studentCollectionString = File.ReadAllText(FilePath);
            JsonConvert.DeserializeObject<BindingList<Student>>(studentCollectionString)?.ToList().ForEach(a => StudentCollection.Add(a));
            cbxStudentIDs.DataSource = StudentCollection;
            cbxStudentIDs.DisplayMember = "ID";
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            string studentCollectionString = JsonConvert.SerializeObject(StudentCollection);
            File.WriteAllText(FilePath, studentCollectionString);
        }
    }```

1 Ответ

0 голосов
/ 05 мая 2020

Используйте код, как показано ниже. Заполните экземпляры student.students данными.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            XmlWriter writer = XmlWriter.Create(FILENAME, settings);

            Students students = new Students();
            XmlSerializer serializer = new XmlSerializer(typeof(Students));
            serializer.Serialize(writer, students);

        }

        public class Students
        {
            [XmlElement("Students")]
            public List<Student> students { get; set; }

        }
        public class Student
        {
            //Eigenschaften
            public string ID { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public decimal Age { get; set; }
            public decimal Height { get; set; }
            public string Schoolclass { get; set; }
            public string Gender { get; set; }

        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...