c#避免覆盖xml文件

本文关键字:xml 文件 覆盖 | 更新日期: 2023-09-27 18:05:52

我创建了一个c#应用程序来将数据写入xml文件。它覆盖了所有的新数据,如何避免……?请帮帮我。这是我的代码

namespace BarcodeScaner
{
 class WriteFile
 {
    DateTime dt=DateTime.Now;
    public WriteFile()
    {
    }

    public void createFile(string ptr,string value)
    {
        using (XmlWriter writer = XmlWriter.Create("Data.xml"))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("Products");
            writer.WriteStartElement("Details");
            writer.WriteAttributeString("PTR", ptr);
            writer.WriteAttributeString("Value", value);
            writer.WriteAttributeString("DateTime", dt.ToString());
            writer.WriteEndElement();
            writer.WriteEndDocument();
        }
    }
  }
}

c#避免覆盖xml文件

您可以使用XmlDocument向现有Xml文档添加自定义节点:

  XmlDocument doc = new XmlDocument();
  doc.Load("Data.xml");
  XmlElement el = doc.CreateElement("child");
  el.InnerText = "Example of data being appendeed";
  doc.DocumentElement.AppendChild(el);
  doc.Save("test.xml"); 

您需要读取现有文件,将您的数据添加到其中。然后将合并后的结果写入文件。

由于XML文件的格式,您不能像使用某些文件格式那样简单地向文件追加新数据。

我假设您想要做的是向现有XML文件添加新数据,对吗?

您不能只是将数据附加到XML文件中,并且您的代码每次运行时实际上都会创建一个新文件,覆盖旧文件。

您需要做的是将XML数据读入内存,添加新节点,然后再次将整个文件写出来。如果有很多数据,那么从一个文件流到另一个文件并插入新节点可能会更有效。