Десериализация XML в C# объект

Задача: Как десериализировать XML документ в C# объекты

Инструменты: C#

Решение:  Для десериализации XML в C# объекты нужно выполнить следующие этапы:

  • Подготовим xml документ. Для примера будем использовать следующий xml:

Some Title C:\Tests\ 8/1/2019

  • Подготовим 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

Добавить комментарий