在 c# 中写入 XML 文件(覆盖)
本文关键字:文件 覆盖 XML | 更新日期: 2023-09-27 18:37:09
在我的迷你应用程序中,我有一个包含 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
。以下是附加新元素的步骤:
- 使用
XDocument.Load
加载 XML 文件 - 使用构造函数创建新
XElement
XElement
- 使用
XDocument.Root.Add
方法向Root
添加新元素。 - 使用
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();
}
}
}