Как сохранить данные в XML? - C#

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

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

Загружаю данные из XML в DataGrid. Некие действия с данными после чего мне нужно новые данные сохранить, пробывал вот так
Листинг программы
  1. private void SaveButton_Click(object sender, RoutedEventArgs e)
  2. {
  3. List<Receipt> newReceipt = new List<Receipt>();
  4. XmlDocument doc = new XmlDocument();
  5. //(1) the xml declaration is recommended, but not mandatory
  6. XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
  7. XmlElement root = doc.DocumentElement;
  8. doc.InsertBefore(xmlDeclaration, root);
  9. //(2) string.Empty makes cleaner code
  10. XmlElement element1 = doc.CreateElement(string.Empty, "Receipts", string.Empty);
  11. doc.AppendChild(element1);
  12. XmlElement element2 = doc.CreateElement(string.Empty, "Receipt", string.Empty);
  13. element1.AppendChild(element2);
  14. XmlAttribute attribute = doc.CreateAttribute("Data");
  15. attribute.Value = XmlConvert.ToString(newReceipt.Date);
  16. element2.Attributes.Append(attribute);
  17. XmlElement element3 = doc.CreateElement(string.Empty, "Number", string.Empty);
  18. XmlText text1 = doc.CreateTextNode(newReceipt.Number);
  19. element3.AppendChild(text1);
  20. element2.AppendChild(element3);
  21. XmlElement element4 = doc.CreateElement(string.Empty, "NameOperation", string.Empty);
  22. XmlText text2 = doc.CreateTextNode(newReceipt.NameOperation);
  23. element4.AppendChild(text2);
  24. element2.AppendChild(element4);
  25. XmlElement element5 = doc.CreateElement(string.Empty, "Cost", string.Empty);
  26. XmlText text3 = doc.CreateTextNode(newReceipt.Cost);
  27. element5.AppendChild(text3);
  28. element2.AppendChild(element5);
  29. doc.Save("D:\\document.xml");
  30. }
Но ничего не получилось, как работать с коллекциями не знаю, еще не проходили, но я так понимаю что с помощью неё нужно как-то данные сохранять, теги и атрибут создаются, но вот новые данные не записываются
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace WpfApplication1
  7. {
  8. public class ParsedXmlDocument
  9. {
  10. //Свойства класса
  11. public List<Receipt> Receipts { get; set; }
  12. //Свойства класса
  13. public ParsedXmlDocument()
  14. {
  15. this.Receipts = new List<Receipt>();
  16. }
  17. }
  18. public class Receipt
  19. {
  20. //Свойства класса
  21. public string Number { get; set; }
  22. public string NameOperation { get; set; }
  23. public DateTime Date { get; set; }
  24. public string Cost { get; set; }
  25. //Свойства класса
  26. public Receipt()
  27. {
  28. this.Number = string.Empty;
  29. this.NameOperation = string.Empty;
  30. this.Date = Date;
  31. this.Cost = string.Empty;
  32. }
  33. }
  34. }

Решение задачи: «Как сохранить данные в XML?»

textual
Листинг программы
  1. XmlDocument xmlDoc = new XmlDocument();
  2.             XmlNode rootNode = xmlDoc.CreateElement(nameof(Receipts));
  3.             xmlDoc.AppendChild(rootNode);
  4.  
  5.             foreach (var item in Receipts)
  6.             {
  7.                 var userNode = xmlDoc.CreateElement(nameof(Receipt));
  8.                 var attribute = xmlDoc.CreateAttribute(nameof(item.Date));
  9.                 attribute.Value = item.Date.ToString();
  10.                 userNode.Attributes.Append(attribute);
  11.  
  12.                 var subNode = xmlDoc.CreateElement(nameof(item.Number));
  13.                 subNode.InnerText = item.Number.ToString();
  14.                 userNode.AppendChild(subNode);
  15.  
  16.                 subNode = xmlDoc.CreateElement(nameof(item.NameOperation));
  17.                 subNode.InnerText = item.NameOperation.ToString();
  18.                 userNode.AppendChild(subNode);
  19.  
  20.                 subNode = xmlDoc.CreateElement(nameof(item.Cost));
  21.                 subNode.InnerText = item.Cost.ToString();
  22.                 userNode.AppendChild(subNode);
  23.  
  24.                 rootNode.AppendChild(userNode);
  25.             }
  26.             xmlDoc.Save("XML123.xml");

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


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

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

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

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

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

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