C#避免覆盖xml文件

时间:2014-05-30 15:39:20

标签: c# xml

我创建了一个C#Application来将数据写入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();
        }
    }
  }
}

3 个答案:

答案 0 :(得分:1)

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

由于XML文件的格式,您无法像使用某些文件格式那样将新数据附加到文件中。

答案 1 :(得分:1)

我假设你想要做的是将新数据添加到现有的XML文件中,对吗?

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

您需要做的是将XML数据读入内存,添加新节点,然后再将整个文件写出来。如果有大量数据,则从一个文件流式传输到另一个文件并插入新节点可能更有效。

答案 2 :(得分:1)

您可以使用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");