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

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

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

Есть файл, в котором хранится информация об аккаунтах
Листинг программы
  1. <Account>
  2. <Login>removed@mail.ru</Login>
  3. <Password>test</Password>
  4. <Nickname>testnick</Nickname>
  5. </Account>
  6. ...
Подобных аккаунтов много. Использую метод десериализации xml Есть код:
Листинг программы
  1. public partial class Form1 : Form
  2. {
  3. public Form1()
  4. {
  5. InitializeComponent();
  6. }
  7. private void button1_Click(object sender, EventArgs e)
  8. {
  9. DeserializeObject("AccountsList.xml");
  10. }
  11. public void DeserializeObject(string filename)
  12. {
  13. XmlSerializer serializer = new XmlSerializer(typeof(Account));
  14. Account i;
  15. using (Stream reader = new FileStream(filename, FileMode.Open))
  16. {
  17. i = (Account)serializer.Deserialize(reader);
  18. }
  19. label1.Text = i.Login;
  20. label2.Text = i.Password;
  21. label3.Text = i.Nickname;
  22. }
  23. }
  24. public class Account
  25. {
  26. [XmlElement]
  27. public string Login;
  28. [XmlElement]
  29. public string Password;
  30. [XmlElement]
  31. public string Nickname;
  32. }
Так я могу получить параметры с одного аккаунта. А как, например, придать каждому аккаунту какой-нибудь номер и получать данные определённого аккаунта по его номеру? Ну или что-то подобное. Помогите, пожалуйста. Заранее спасибо

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

textual
Листинг программы
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4. using System.Xml.Serialization;
  5. using System.IO;
  6.  
  7. namespace NetExperiments
  8. {
  9.     [XmlType("Accounts")]
  10.     public class AccountsCollection
  11.     {
  12.         [XmlElement("Account")]
  13.         public List<Account> Accounts;
  14.     }
  15.  
  16.     public class Account
  17.     {
  18.         [XmlElement]
  19.         public string Login;
  20.         [XmlElement]
  21.         public string Password;
  22.         [XmlElement]
  23.         public string Nickname;
  24.     }
  25.  
  26.     class Program
  27.     {
  28.         static void Main(string[] args)
  29.         {
  30.             XmlSerializer serializer = new XmlSerializer(typeof(AccountsCollection));
  31.  
  32.             using (var reader = new StringReader(Resource1.XmlData))
  33.             {
  34.                 var accounts = (AccountsCollection)serializer.Deserialize(reader);
  35.  
  36.                 Console.WriteLine($"Found items: {accounts.Accounts.Count()}\r\n");
  37.  
  38.                 foreach(var account in accounts.Accounts)
  39.                 {
  40.                     Console.WriteLine("   Login: {0}", account.Login);
  41.                     Console.WriteLine("Password: {0}", account.Password);
  42.                     Console.WriteLine("Nickname: {0}", account.Nickname);
  43.  
  44.                     Console.WriteLine();
  45.                 }
  46.             }
  47.  
  48.             Console.WriteLine("Done");
  49.             Console.ReadKey();
  50.         }
  51.     }
  52. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут