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

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

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

Доброго времени суток! Подскажите пожалуйста, как сериализовать/десериализовать xml объект вида
Листинг программы
  1. <root>
  2. <auditChangeList>
  3. <row sTime="date" autor="guid">
  4. <changedItem propertyName="title">
  5. <oldValue>old</oldValue>
  6. <newValue>new</newValue>
  7. <propertyType>int</propertyType>
  8. </changedItem>
  9. </row>
  10. </auditChangeList>
  11. </root>
Класс получается таким если не ошибаюсь
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Xml.Serialization;
  7. namespace aam.mc.WebApiService.App.Services.Models.Product
  8. {
  9. [Serializable]
  10. [XmlRoot(ElementName = "root")]
  11. public class HistoryModel
  12. {
  13. [XmlElement(ElementName = "auditChangeList")]
  14. public AuditChangeList AuditChangeList { get; set; }
  15. public HistoryModel()
  16. { }
  17. }
  18. [XmlRoot(ElementName = "changedItem")]
  19. public class ChangedItem
  20. {
  21. [XmlElement(ElementName = "oldValue")]
  22. public string OldValue { get; set; }
  23. [XmlElement(ElementName = "newValue")]
  24. public string NewValue { get; set; }
  25. [XmlElement(ElementName = "propertyType")]
  26. public string PropertyType { get; set; }
  27. [XmlAttribute(AttributeName = "propertyName")]
  28. public string PropertyName { get; set; }
  29. public ChangedItem()
  30. { }
  31. }
  32. [XmlRoot(ElementName = "row")]
  33. public class Row
  34. {
  35. [XmlElement(ElementName = "changedItem")]
  36. public ChangedItem ChangedItem { get; set; }
  37. [XmlAttribute(AttributeName = "sTime")]
  38. public DateTime STime { get; set; }
  39. [XmlAttribute(AttributeName = "autor")]
  40. public string Autor { get; set; }
  41. public Row()
  42. { }
  43. }
  44. [XmlRoot(ElementName = "auditChangeList")]
  45. public class AuditChangeList
  46. {
  47. [XmlElement(ElementName = "row")]
  48. public Row Row { get; set; }
  49. public AuditChangeList()
  50. { }
  51. }
  52. }
Прогуглил кучу информации, но результата не достиг

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

textual
Листинг программы
  1. using System;
  2. using System.IO;
  3. using System.Xml;
  4. using System.Xml.Serialization;
  5. class Program
  6. {
  7.     static void Main()
  8.     {
  9.         var str = @"<root><auditChangeList><row sTime = '21.05.2017' autor = 'guid' ><changedItem propertyName = 'title'>
  10. <oldValue>old</oldValue><newValue>new</newValue><propertyType>int</propertyType></changedItem>
  11. </row></auditChangeList></root>";
  12.  
  13.         XmlSerializer ser = new XmlSerializer(typeof(Root));
  14.  
  15.         using (var stringReader = new StringReader(str))
  16.         {
  17.             Root root = ser.Deserialize(stringReader) as Root;
  18.        
  19.  
  20.         Console.WriteLine(root.AuditChangeList.Row.STime + " "
  21.             + root.AuditChangeList.Row.Autor);
  22.         }
  23.  
  24.         Console.ReadKey();
  25.     }
  26. }

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


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

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

14   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы