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

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

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

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

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

textual
Листинг программы
XmlDocument xmlDoc = new XmlDocument();
            XmlNode rootNode = xmlDoc.CreateElement(nameof(Receipts));
            xmlDoc.AppendChild(rootNode);
 
            foreach (var item in Receipts)
            {
                var userNode = xmlDoc.CreateElement(nameof(Receipt));
                var attribute = xmlDoc.CreateAttribute(nameof(item.Date));
                attribute.Value = item.Date.ToString();
                userNode.Attributes.Append(attribute);
 
                var subNode = xmlDoc.CreateElement(nameof(item.Number));
                subNode.InnerText = item.Number.ToString();
                userNode.AppendChild(subNode);
 
                subNode = xmlDoc.CreateElement(nameof(item.NameOperation));
                subNode.InnerText = item.NameOperation.ToString();
                userNode.AppendChild(subNode);
 
                subNode = xmlDoc.CreateElement(nameof(item.Cost));
                subNode.InnerText = item.Cost.ToString();
                userNode.AppendChild(subNode);
 
                rootNode.AppendChild(userNode);
            }
            xmlDoc.Save("XML123.xml");

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


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

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

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