Десериализация Xml с несколькими блоками - C#
Формулировка задачи:
Есть файл, в котором хранится информация об аккаунтах
Подобных аккаунтов много. Использую метод десериализации xml
Есть код:
Так я могу получить параметры с одного аккаунта. А как, например, придать каждому аккаунту какой-нибудь номер и получать данные определённого аккаунта по его номеру? Ну или что-то подобное. Помогите, пожалуйста. Заранее спасибо
<Account>
<Login>removed@mail.ru</Login>
<Password>test</Password>
<Nickname>testnick</Nickname>
</Account>
...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();
}
}
}