【问题标题】:How to add data to an existing xml file in c#如何在c#中将数据添加到现有的xml文件中
【发布时间】:2015-04-02 18:50:46
【问题描述】:

我正在使用这个 c# 代码将数据写入 xml 文件:

Employee[] employees = new Employee[2];
employees[0] = new Employee(1, "David", "Smith", 10000);
employees[1] = new Employee(12, "Cecil", "Walker", 120000);

using (XmlWriter writer = XmlWriter.Create("employees.xml"))
{
    writer.WriteStartDocument();
    writer.WriteStartElement("Employees");

    foreach (Employee employee in employees)
    {
    writer.WriteStartElement("Employee");

    writer.WriteElementString("ID", employee.Id.ToString());
    writer.WriteElementString("FirstName", employee.FirstName);
    writer.WriteElementString("LastName", employee.LastName);
    writer.WriteElementString("Salary", employee.Salary.ToString());

    writer.WriteEndElement();
    }

    writer.WriteEndElement();
    writer.WriteEndDocument();
}

现在假设我重新启动我的应用程序,我想在不丢失现有数据的情况下将新数据添加到 xml 文件中,使用相同的方式将覆盖我的 xml 文件上的数据,我试图弄清楚如何做到这一点,我搜索了一个类似的例子,但我什么都没有,任何想法??

【问题讨论】:

标签: c# xml


【解决方案1】:

也许你应该看看一些使用数据集和 xml 的例子:

http://www.codeproject.com/Articles/13854/Using-XML-as-Database-with-Dataset

或使用 System.Xml.Serialization.XmlSerializer,当您没有大量记录时。

使用 XmlDocument 的示例

XmlDocument xd = new XmlDocument();
xd.Load("employees.xml");
XmlNode nl = xd.SelectSingleNode("//Employees");
XmlDocument xd2 = new XmlDocument();
xd2.LoadXml("<Employee><ID>20</ID><FirstName>Clair</FirstName><LastName>Doner</LastName><Salary>13000</Salary></Employee>");
XmlNode n = xd.ImportNode(xd2.FirstChild,true);
nl.AppendChild(n);
xd.Save(Console.Out);

【讨论】:

  • 使用上面的代码并替换最后一行 xd.Save("employees.xml");是我要找的,谢谢。
【解决方案2】:

对少量数据使用 xml 编写器很尴尬。您最好使用XDocument,您可以在第一次运行时从头开始初始化,或者在后续运行中从现有文件中读取。

使用XDocument,您可以使用XElementXAttribute 实例操作XML,然后在您想要持久化时将整个内容写入文件。

【讨论】:

  • 有什么例子吗?我不确定如何处理这个问题,例如我可以使用 XDocument 加载 xml 文件,然后使用 XElement 添加新元素吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多