Десериализация XML не срабатывает - C#

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

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

Здравствуйте. Столкнулась с такой проблемой: неделю назад благополучно решила вопрос с записью объектов в XML и обратно методами сериализации/десериализации. Всё отлично работало. Сегодня работать перестало, хз почему, ничего не меняла. Сериализация работает - данные из List<> прекрасно записывает в XML. Но обратно из XML в List<> ни в какую. Причем ошибки никакой нет, просто упорно пишет, что в List<> 0 записей, хотя должно быть не 0. В чем может быть проблема? (компьютер перезагружала) Класс
Листинг программы
  1. public class VisitHistoryPeople
  2. {
  3. int id_visitpeople;
  4. public int Id_visitpeople
  5. {
  6. get { return id_visitpeople; }
  7. set { id_visitpeople = value; }
  8. }
  9. int id_people;
  10. public int Id_people
  11. {
  12. get { return id_people; }
  13. set { id_people = value; }
  14. }
  15. int id_request;
  16. public int Id_request
  17. {
  18. get { return id_request; }
  19. set { id_request = value; }
  20. }
  21. int from;
  22. public int From
  23. {
  24. get { return from; }
  25. set { from = value; }
  26. }
  27. int where;
  28. public int Where
  29. {
  30. get { return where; }
  31. set { where = value; }
  32. }
  33. DateTime time;
  34. public DateTime Time
  35. {
  36. get { return time; }
  37. set { time = value; }
  38. }
  39. public VisitHistoryPeople()
  40. { }
  41. public VisitHistoryPeople(int id_visit, int id_people, int id_request, int f, int w, DateTime t)
  42. {
  43. Id_visitpeople = id_visit;
  44. Id_people = id_people;
  45. Id_request = id_request;
  46. From = f;
  47. Where = w;
  48. Time = t;
  49. }
  50. public VisitHistoryPeople(int id_people, int id_request, int f, int w, DateTime t)
  51. {
  52. Id_people = id_people;
  53. Id_request = id_request;
  54. From = f;
  55. Where = w;
  56. Time = t;
  57. }
  58. }
Сериализация:
Листинг программы
  1. public void WriteVisitHistoryPeopleToXML()
  2. {
  3. FileStream stream = new FileStream(pathVisitHistoryPeople, FileMode.Create);
  4. XmlSerializer serializer = new XmlSerializer(typeof(List<_Client.ServiceReference1.VisitHistoryPeople>));
  5. serializer.Serialize(stream, l_vishistpeople);
  6. stream.Close();
  7. }
Инициализация l_vishistpeople:
Листинг программы
  1. List<_Client.ServiceReference1.VisitHistoryPeople> = l_vishistpeople = PutXmlIntoListVisitHistoryPeople();
Десериализация:
Листинг программы
  1. public List<_Client.ServiceReference1.VisitHistoryPeople> PutXmlIntoListVisitHistoryPeople()
  2. {
  3. XmlSerializer reader = new XmlSerializer(typeof(List<_Client.ServiceReference1.VisitHistoryPeople>));
  4. StreamReader file = new StreamReader(pathVisitHistoryPeople);
  5. List<_Client.ServiceReference1.VisitHistoryPeople> lvhp = (List<_Client.ServiceReference1.VisitHistoryPeople>)reader.Deserialize(file);
  6. file.Close();
  7. return lvhp;
  8. }
Дозапись в XML файл:
Листинг программы
  1. public void AddItemToVisitHistory(_Client.ServiceReference1.VisitHistoryPeople vhp)
  2. {
  3. XmlDocument _doc = new XmlDocument();
  4. _doc.Load(pathVisitHistoryPeople);
  5. XmlElement newVisitHistoryPeople = _doc.CreateElement("VisitHistoryPeople");
  6. XmlElement newIdVHP = _doc.CreateElement("Id_visitpeople");
  7. newIdVHP.InnerText = "0";
  8. newVisitHistoryPeople.AppendChild(newIdVHP);
  9. XmlElement newIdP = _doc.CreateElement("Id_people");
  10. newIdP.InnerText = Convert.ToString(vhp.Id_people);
  11. newVisitHistoryPeople.AppendChild(newIdP);
  12. XmlElement newIdR = _doc.CreateElement("Id_request");
  13. newIdR.InnerText = Convert.ToString(vhp.Id_request);
  14. newVisitHistoryPeople.AppendChild(newIdR);
  15. XmlElement newIdF = _doc.CreateElement("From");
  16. newIdF.InnerText = Convert.ToString(vhp.From);
  17. newVisitHistoryPeople.AppendChild(newIdF);
  18. XmlElement newIdW = _doc.CreateElement("Where");
  19. newIdW.InnerText = Convert.ToString(vhp.Where);
  20. newVisitHistoryPeople.AppendChild(newIdW);
  21. XmlElement newIdT = _doc.CreateElement("Time");
  22. newIdT.InnerText = XmlConvert.ToString(vhp.Time, XmlDateTimeSerializationMode.Unspecified);
  23. newVisitHistoryPeople.AppendChild(newIdT);
  24. _doc.DocumentElement.AppendChild(newVisitHistoryPeople);
  25. _doc.Save(pathVisitHistoryPeople);
  26. }

Решение задачи: «Десериализация XML не срабатывает»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Xml;
  8. using System.Xml.Serialization;
  9.  
  10. namespace Marronie
  11. {
  12.     class Program
  13.     {
  14.         static void Main(string[] args)
  15.         {
  16.             List<VisitHistoryPeople> l1 = new List<VisitHistoryPeople>();
  17.             l1.Add(new VisitHistoryPeople(1, 1, 1, 1, DateTime.Now));
  18.             l1.Add(new VisitHistoryPeople(1, 1, 1, 1, DateTime.Now));
  19.             VisitHistoryPeople.Save(l1, "test.xml");
  20.             var a = VisitHistoryPeople.Load("test.xml");
  21.         }
  22.  
  23.         private static List<VisitHistoryPeople> l_vishistpeople;
  24.  
  25.         private static string pathVisitHistoryPeople = "doc.xml";
  26.     }
  27.  
  28.     public class VisitHistoryPeople
  29.     {
  30.         public int Id_visitpeople { get; set; }
  31.         public int Id_people { get; set; }
  32.         public int Id_request { get; set; }
  33.         public int From { get; set; }
  34.         public int Where { get; set; }
  35.         public DateTime Time { get; set; }
  36.  
  37.         public VisitHistoryPeople()
  38.         {
  39.         }
  40.  
  41.         public VisitHistoryPeople(int id_visit, int id_people, int id_request, int f, int w, DateTime t)
  42.         {
  43.             Id_visitpeople = id_visit;
  44.             Id_people = id_people;
  45.             Id_request = id_request;
  46.             From = f;
  47.             Where = w;
  48.             Time = t;
  49.         }
  50.  
  51.         public VisitHistoryPeople(int id_people, int id_request, int f, int w, DateTime t)
  52.         {
  53.             Id_people = id_people;
  54.             Id_request = id_request;
  55.             From = f;
  56.             Where = w;
  57.             Time = t;
  58.         }
  59.  
  60.         public static void Save(List<VisitHistoryPeople> List, string FileName)
  61.         {
  62.             using (FileStream fs = new FileStream(FileName, FileMode.Create))
  63.             {
  64.                 XmlSerializer ser = new XmlSerializer(typeof(List<VisitHistoryPeople>));
  65.                 ser.Serialize(fs, List);
  66.                 fs.Flush();
  67.                 fs.Close();
  68.             }
  69.         }
  70.         public static List<VisitHistoryPeople> Load(string FileName)
  71.         {
  72.             if (!File.Exists(FileName))
  73.                 throw new FileNotFoundException("The list file could not be found", FileName);
  74.  
  75.             List<VisitHistoryPeople> result;
  76.  
  77.             using (FileStream fs = new FileStream(FileName, FileMode.Open))
  78.             {
  79.                 XmlSerializer ser = new XmlSerializer(typeof(List<VisitHistoryPeople>));
  80.                 result = (List<VisitHistoryPeople>)ser.Deserialize(fs);
  81.             }
  82.             return result;
  83.         }
  84.     }
  85. }

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


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

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

7   голосов , оценка 4.571 из 5

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

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

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