Как я могу прочитать файл XML и поместить информацию в объекты? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть функция, которая записывает всю информацию об объектах, которые у меня есть в списке, в файл XML.

    public static void UpdateXML()
    {
        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        XmlWriter Writer = XmlWriter.Create("path", settings);
        Writer.WriteStartDocument();
        Writer.WriteStartElement("Accounts");
        foreach (var acc in Bank.Bankaccountlist)
        {
            Writer.WriteStartElement("Account");
            Writer.WriteAttributeString("ID", acc.id.ToString());
            Writer.WriteElementString("Name", acc.GetName());
            Writer.WriteElementString("Lastname", acc.GetLastname());
            Writer.WriteElementString("Balance", acc.GetBalance().ToString());
            Writer.WriteEndElement();
        }
        Writer.WriteEndElement();
        Writer.Flush();
        Writer.Close();
    }

Теперь, когда программа закрывается, все данные все еще находятся в файл. Итак, как только Программа снова запустится, она должна снова создать все старые объекты (создание объекта Account автоматически поместит его в список).

Может ли кто-нибудь сказать мне, как это было бы возможно?

Обратите внимание, что int id и double balance.

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Вам также нужно будет пометить каждую часть o jet как атрибут xml, чтобы сериализовать объект в xml. Затем вы можете l oop просматривать файлы в каталоге xml и десериализовать их, используя xml reader. Я считаю, что есть пакет nuget, который может помочь в этом.

0 голосов
/ 17 июня 2020

Чтобы дать ответ в зависимости от вашего фактического решения, вы должны использовать XmlReader как аналог вашего XmlWriter. Для каждого типа свойства, кроме строки, вы должны использовать Convert или соответствующий метод TryParse. Но вы можете взглянуть на XmlSerializer, который нацелен именно на ваш вариант использования.

https://docs.microsoft.com/en-us/dotnet/api/system.xml.serialization.xmlserializer?view=netcore-3.1

...