繁体   English   中英

用C#编写XML文件(覆盖)

[英]Writing in an XML file in c# (overwrite )

在我的迷你应用程序中,我有一个包含3个文本框的页面,可以在其中放置一些字符串。 我希望将它们保存在XML文件中。 我的问题是,每次引入新的数据集时,它都会覆盖现有数据集。 这是我的代码:

protected void Button1_Click(object sender, EventArgs e){

            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            DateTime start, end;
            DateTime.TryParse(TextBox1.Text, out start);
            DateTime.TryParse(TextBox2.Text, out end);
            float suma = 0.0f;
            float.TryParse(TextBox3.Text, out suma);
            using (XmlWriter writer = XmlWriter.Create("c:/users/ideapad/documents/visual studio 2013/Projects/XmlReader/XmlReader/rezervari.xml", settings))
            {
                writer.WriteStartDocument();
                writer.WriteStartElement("Rezervari");

                writer.WriteStartElement("Rezervare");
                writer.WriteElementString("ID", ID);
                writer.WriteElementString("start", start.ToShortDateString());
                writer.WriteElementString("end", end.ToShortDateString());
                writer.WriteElementString("suma", suma.ToString());
                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Flush();
                writer.Close();
            }

        }

我如何保留自己拥有的东西并在旁边添加? (我看不到任何方法加载或类似的东西)

我将为此使用LINQ to XML 以下是添加新元素的步骤:

  1. 使用XDocument.Load加载XML文件
  2. 使用XElement构造函数创建一个新的XElement
  3. 使用XDocument.Root.Add方法将新元素添加到Root
  4. 使用XDocument.Save保存文档

我已经对您的代码进行了如下调整。 这应该可以解决您的问题。

private void button1_Click(object sender, EventArgs e)
    {

        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        DateTime start, end;
        DateTime.TryParse(textBox1.Text, out start);
        DateTime.TryParse(textBox2.Text, out end);
        float suma = 0.0f;
        float.TryParse(textBox3.Text, out suma);
        //Added this new line. Boolean parameter (true) here means append to existing content. 
        using (var stream = new StreamWriter("c:/users/ideapad/documents/visual studio 2013/Projects/XmlReader/XmlReader/rezervari.xml", true))
        {
            //Changed this line
            using (XmlWriter writer = XmlWriter.Create(stream, settings))
            {
                writer.WriteStartDocument();
                writer.WriteStartElement("Rezervari");

                writer.WriteStartElement("Rezervare");
                writer.WriteElementString("ID", ID);
                writer.WriteElementString("start", start.ToShortDateString());
                writer.WriteElementString("end", end.ToShortDateString());
                writer.WriteElementString("suma", suma.ToString());
                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Flush();
                writer.Close();
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM