Сериализовать/Десериализовать 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();
}
}