Как сохранить данные в 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");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д