在C#中,操作XML文件是一项常见的任务,用于读取、写入或修改XML文档。XML(可扩展标记语言)是一种结构化数据格式,广泛应用于数据交换和存储。以下是使用C#操作XML文件的一些基本方法,主要涉及`System.Xml`命名空间中的类。 为了操作XML文件,你需要引入`System.Xml`命名空间: ```csharp using System.Xml; ``` 接着,定义一些常用的对象,例如`XmlDocument`、`XmlNode`和`XmlElement`: ```csharp XmlDocument xmldoc = new XmlDocument(); XmlNode xmlnode; XmlElement xmlelem; ``` **方法一:使用`XmlDocument`创建XML文件** 这是创建XML文件的一种常见方式。首先创建一个`XmlDocument`实例,然后添加XML声明和根元素。以下代码演示了如何创建一个包含两个`Node`元素的`Employees`文档: ```csharp // 创建XML声明 XmlDeclaration xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null); xmldoc.AppendChild(xmldecl); // 创建根元素 xmlelem = xmldoc.CreateElement("Employees"); xmldoc.AppendChild(xmlelem); // 添加子元素 for (int i = 1; i < 3; i++) { XmlNode root = xmldoc.SelectSingleNode("Employees"); // 创建并设置属性 XmlElement xe1 = xmldoc.CreateElement("Node"); xe1.SetAttribute("genre", "李赞红"); xe1.SetAttribute("ISBN", "2-3631-4"); // 添加子元素 xe1.AppendChild(xmldoc.CreateElement("title")).InnerText = "CS 从入门到精通"; xe1.AppendChild(xmldoc.CreateElement("author")).InnerText = "候捷"; xe1.AppendChild(xmldoc.CreateElement("price")).InnerText = "58.3"; root.AppendChild(xe1); } // 保存到文件 xmldoc.Save(Server.MapPath("data.xml")); ``` 这段代码会创建一个XML文件,内容如下: ```xml <?xml version="1.0" encoding="gb2312"?> <Employees> <Node genre="李赞红" ISBN="2-3631-4"> <title>CS 从入门到精通</title> <author>候捷</author> <price>58.3</price> </Node> <Node genre="李赞红" ISBN="2-3631-4"> <title>CS 从入门到精通</title> <author>候捷</author> <price>58.3</price> </Node> </Employees> ``` **方法二:使用`XmlTextWriter`创建XML文件** 另一种创建XML文件的方式是使用`XmlTextWriter`,它允许更直接地控制XML的输出格式: ```csharp string strFilename = Server.MapPath("data1.xml"); XmlTextWriter xmlWriter = new XmlTextWriter(strFilename, Encoding.Default); // 设置格式 xmlWriter.Formatting = Formatting.Indented; // 写入XML声明和开始元素 xmlWriter.WriteStartDocument(); xmlWriter.WriteStartElement("Employees"); // 写入子元素及其属性 xmlWriter.WriteStartElement("Node"); xmlWriter.WriteAttributeString("genre", "李赞红"); // ...(其余子元素的写入) // 关闭当前元素 xmlWriter.WriteEndElement(); // 结束XML文档 xmlWriter.WriteEndDocument(); // 关闭写入器 xmlWriter.Close(); ``` 这种方法同样可以创建与前一个示例相同内容的XML文件,但具有更好的控制和格式化能力。 **读取XML文件** 要读取XML文件,可以使用`XmlDocument`的`Load`方法: ```csharp // 加载XML文件 xmldoc.Load(Server.MapPath("data.xml")); // 查询XML XmlNodeList nodeList = xmldoc.SelectNodes("//Node"); foreach (XmlNode node in nodeList) { // 访问属性和子元素 Console.WriteLine($"Genre: {node.Attributes["genre"].Value}, ISBN: {node.Attributes["ISBN"].Value}"); Console.WriteLine($"Title: {node.SelectSingleNode("title").InnerText}"); Console.WriteLine($"Author: {node.SelectSingleNode("author").InnerText}"); Console.WriteLine($"Price: {node.SelectSingleNode("price").InnerText}"); } ``` **修改XML文件** 对已有的XML文件进行修改,通常涉及找到需要更新的节点,然后使用`XmlNode`的相关方法来改变属性或子元素。例如,要更改某个`Node`的`genre`属性,可以这样做: ```csharp XmlNode nodeToUpdate = xmldoc.SelectSingleNode("//Node[@genre='李赞红']"); if (nodeToUpdate != null) { nodeToUpdate.Attributes["genre"].Value = "新值"; // 保存修改 xmldoc.Save(Server.MapPath("data.xml")); } ``` **删除XML节点** 删除节点时,可以先找到要删除的节点,然后调用`RemoveChild`方法: ```csharp XmlNode nodeToDelete = xmldoc.SelectSingleNode("//Node[@genre='新值']"); if (nodeToDelete != null) { nodeToDelete.ParentNode.RemoveChild(nodeToDelete); // 保存修改 xmldoc.Save(Server.MapPath("data.xml")); } ``` C#提供了强大的XML处理功能,通过`System.Xml`命名空间的类,你可以方便地创建、读取、修改和删除XML文件中的数据。这些只是基本操作,实际应用中可能还需要使用XPath表达式来查询XML,或者使用`XDocument`和`LINQ to XML`进行更高级的操作。
剩余7页未读,继续阅读
- zhang78313052016-07-12用处不大,需要二次封装
- 粉丝: 3
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助