Задача: Как десериализировать XML документ в C# объекты
Инструменты: C#
Решение: Для десериализации XML в C# объекты нужно выполнить следующие этапы:
- Подготовим xml документ. Для примера будем использовать следующий xml:
- Подготовим C# объект для сериализации/десериализации
[Serializable]
[XmlRoot(ElementName = "test", Namespace = "")]
public class Test
{
[XmlElement("title")]
public string Title { get; set; }
[XmlElement("resource_path")]
public string ResourcePath { get; set; }
[XmlElement("date")]
public string Date { get; set; }
[XmlElement("time")]
public string Time { get; set; }
}
- Напишем код для десериализации. На вход передаем файл, в результате получим десериализированный объект
using System.Xml.Serialization;
...
private T Load(string filePath)
{
using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(fileStream);
}
}
- Пример использования
var xmlTests = Load();
PS: В Visual Studio есть неплохой инструмент, который может помочь создать набор классов по существующему xml документу. Для этого нужно скопировать xml текст, в Visual Studio создать новый файл и выбрать пункт меню Edit -> Paste Special -> Paste XML as Classes