Сериализовать/Десериализовать xml объект - C#

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

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

Доброго времени суток! Подскажите пожалуйста, как сериализовать/десериализовать xml объект вида
<root>
    <auditChangeList>
        <row sTime="date" autor="guid">
            <changedItem propertyName="title">
                <oldValue>old</oldValue>
                <newValue>new</newValue>
                <propertyType>int</propertyType>
            </changedItem>
        </row>
    </auditChangeList>
</root>
Класс получается таким если не ошибаюсь
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
 
namespace aam.mc.WebApiService.App.Services.Models.Product
{
    [Serializable]
    [XmlRoot(ElementName = "root")]
    public class HistoryModel
    {
        [XmlElement(ElementName = "auditChangeList")]
        public AuditChangeList AuditChangeList { get; set; }
 
        public HistoryModel()
        { }
    }
 
    [XmlRoot(ElementName = "changedItem")]
        public class ChangedItem
        {
            [XmlElement(ElementName = "oldValue")]
            public string OldValue { get; set; }
            [XmlElement(ElementName = "newValue")]
            public string NewValue { get; set; }
            [XmlElement(ElementName = "propertyType")]
            public string PropertyType { get; set; }
            [XmlAttribute(AttributeName = "propertyName")]
            public string PropertyName { get; set; }
 
        public ChangedItem()
        { }
    }
 
        [XmlRoot(ElementName = "row")]
        public class Row
        {
            [XmlElement(ElementName = "changedItem")]
            public ChangedItem ChangedItem { get; set; }
            [XmlAttribute(AttributeName = "sTime")]
            public DateTime STime { get; set; }
            [XmlAttribute(AttributeName = "autor")]
            public string Autor { get; set; }
 
        public Row()
        { }
        }
 
        [XmlRoot(ElementName = "auditChangeList")]
        public class AuditChangeList
        {
            [XmlElement(ElementName = "row")]
            public Row Row { get; set; }
 
        public AuditChangeList()
        { }
        }      
}
Прогуглил кучу информации, но результата не достиг

Решение задачи: «Сериализовать/Десериализовать xml объект»

textual
Листинг программы
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
class Program
{
    static void Main()
    {
        var str = @"<root><auditChangeList><row sTime = '21.05.2017' autor = 'guid' ><changedItem propertyName = 'title'>
<oldValue>old</oldValue><newValue>new</newValue><propertyType>int</propertyType></changedItem>
</row></auditChangeList></root>";
 
        XmlSerializer ser = new XmlSerializer(typeof(Root));
 
        using (var stringReader = new StringReader(str))
        {
            Root root = ser.Deserialize(stringReader) as Root;
       
 
        Console.WriteLine(root.AuditChangeList.Row.STime + " "
            + root.AuditChangeList.Row.Autor);
        }
 
        Console.ReadKey();
    }
}

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


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

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

14   голосов , оценка 3.571 из 5
Похожие ответы