C#操作XML文件:创建、读取、修改与删除节点实战

需积分: 0 1 下载量 59 浏览量 更新于2024-09-01 收藏 80KB PDF 举报
"C#对XML文件的各种操作实现方法" 在C#编程中,XML文件是一种常用的结构化数据存储格式,由于其易于阅读和编写,同时提供了数据交换的标准,因此在许多场景下被广泛使用。本篇文章将介绍如何使用C#进行XML文件的基本操作,包括创建、读取、修改、添加和删除节点。 首先,我们要了解XML的基本结构。XML文档由一系列元素(Element)组成,元素通过标签(Tag)定义,每个元素可以有属性(Attribute)和子元素。元素必须正确闭合,即每个打开的标签都有对应的结束标签。 接下来,我们将逐个讲解C#中处理XML文件的各个操作: 1. 生成XML文件: 使用`System.Xml`命名空间中的`XmlWriter`类可以创建XML文件。首先,创建一个`XmlWriterSettings`实例,设置编码和其他选项,然后使用`XmlWriter.Create`创建一个`XmlWriter`对象,最后通过该对象写入XML元素和属性。 示例代码: ```csharp using System.Xml; // 创建XmlWriterSettings var settings = new XmlWriterSettings(); settings.Indent = true; // 设置缩进 using (var writer = XmlWriter.Create("computers.xml", settings)) { writer.WriteStartDocument(); // 写入XML声明 writer.WriteStartElement("Computers"); // 开始写入Computers元素 // 添加Computer元素 writer.WriteStartElement("Computer"); writer.WriteAttributeString("ID", "11111111"); writer.WriteString("Description", "MadeinChina"); // 添加子元素 writer.WriteStartElement("name"); writer.WriteString("Lenovo"); writer.WriteEndElement(); writer.WriteStartElement("price"); writer.WriteString("5000"); writer.WriteEndElement(); writer.WriteEndElement(); // 结束Computer元素 // ... 类似地添加其他Computer元素 writer.WriteEndDocument(); // 写入文档结束 } ``` 2. 遍历XML文件的节点信息: 可以使用`XmlDocument`或`XDocument`类来加载XML文件并遍历其节点。`XmlDocument`是.NET Framework早期版本中的API,而`XDocument`是LINQ to XML的一部分,更现代且易用。 示例代码(使用`XDocument`): ```csharp using System.Linq; using System.Xml.Linq; XDocument doc = XDocument.Load("computers.xml"); foreach (XElement computer in doc.Descendants("Computer")) { string id = computer.Attribute("ID").Value; string desc = computer.Element("Description").Value; string name = computer.Element("name").Value; string price = computer.Element("price").Value; Console.WriteLine($"ID: {id}, Description: {desc}, Name: {name}, Price: {price}"); } ``` 3. 修改XML文件的节点信息: 通过找到相应的节点,然后使用`SetValue`或`ReplaceWith`方法来更新内容。 示例代码: ```csharp XElement lenovo = doc.Descendants("Computer") .Where(c => c.Attribute("ID").Value == "11111111") .FirstOrDefault(); if (lenovo != null) { lenovo.Element("price").SetValue("4800"); // 修改价格 } doc.Save("computers.xml"); // 保存修改 ``` 4. 向XML文件添加节点信息: 新建一个元素,设置好属性和子元素,然后插入到适当的位置。 示例代码: ```csharp XElement newComputer = new XElement("Computer", new XAttribute("ID", "33333333"), new XElement("Description", "MadeinJapan"), new XElement("name", "HP"), new XElement("price", "6000")); doc.Root.Add(newComputer); // 添加到根元素的末尾 doc.Save("computers.xml"); ``` 5. 删除指定XML文件的节点信息: 找到要删除的节点,然后调用`Remove`方法。 示例代码: ```csharp XElement ibm = doc.Descendants("Computer") .Where(c => c.Attribute("ID").Value == "2222222") .FirstOrDefault(); if (ibm != null) { ibm.Remove(); // 删除找到的节点 } doc.Save("computers.xml"); ``` 通过这些基本操作,你可以轻松地在C#中管理XML文件,实现数据的持久化存储和交换。在实际开发中,还可以结合LINQ to XML等高级特性,进一步提升代码的简洁性和可读性。不过,需要注意的是,当XML文件较大时,可能需要考虑性能优化,比如使用流式处理或只读访问。