Десериализация Xml с несколькими блоками - C#

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

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

Есть файл, в котором хранится информация об аккаунтах
<Account>
    <Login>removed@mail.ru</Login>
    <Password>test</Password>
    <Nickname>testnick</Nickname>
</Account>
...
Подобных аккаунтов много. Использую метод десериализации xml Есть код:
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            DeserializeObject("AccountsList.xml");
        }
 
        public void DeserializeObject(string filename)
        {
 
            XmlSerializer serializer = new XmlSerializer(typeof(Account));
 
            Account i;
 
            using (Stream reader = new FileStream(filename, FileMode.Open))
            {
                i = (Account)serializer.Deserialize(reader);
            }
 
            label1.Text = i.Login;
            label2.Text = i.Password;
            label3.Text = i.Nickname;
        }
    }
 
    public class Account
    {
        [XmlElement]
        public string Login;
        [XmlElement]
        public string Password;
 
        [XmlElement]
        public string Nickname;
    }
Так я могу получить параметры с одного аккаунта. А как, например, придать каждому аккаунту какой-нибудь номер и получать данные определённого аккаунта по его номеру? Ну или что-то подобное. Помогите, пожалуйста. Заранее спасибо

Решение задачи: «Десериализация Xml с несколькими блоками»

textual
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.IO;
 
namespace NetExperiments
{
    [XmlType("Accounts")]
    public class AccountsCollection
    {
        [XmlElement("Account")]
        public List<Account> Accounts;
    }
 
    public class Account
    {
        [XmlElement]
        public string Login;
        [XmlElement]
        public string Password;
        [XmlElement]
        public string Nickname;
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(AccountsCollection));
 
            using (var reader = new StringReader(Resource1.XmlData))
            {
                var accounts = (AccountsCollection)serializer.Deserialize(reader);
 
                Console.WriteLine($"Found items: {accounts.Accounts.Count()}\r\n");
 
                foreach(var account in accounts.Accounts)
                {
                    Console.WriteLine("   Login: {0}", account.Login);
                    Console.WriteLine("Password: {0}", account.Password);
                    Console.WriteLine("Nickname: {0}", account.Nickname);
 
                    Console.WriteLine();
                }
            }
 
            Console.WriteLine("Done");
            Console.ReadKey();
        }
    }
}

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


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

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

15   голосов , оценка 4.133 из 5