在C#编程中,XML是一种常见的数据存储和交换格式,用于结构化数据的处理。本文将深入探讨如何使用C#对XML文件进行增删改查操作。我们来看一个简单的XML文件示例,名为`bookstore.xml`: ```xml <?xml version="1.0" encoding="gb2312"?> <bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> </bookstore> ``` 1. **增加节点** 在这个例子中,我们需要在`<bookstore>`节点下插入一个新的`<book>`节点。我们创建一个`XmlDocument`对象加载XML文件,然后通过`SelectSingleNode`方法找到`<bookstore>`节点。接着,我们使用`CreateElement`方法创建新的`<book>`节点,并设置其属性。之后,创建并添加子节点如`<title>`、`<author>`和`<price>`,最后将新创建的`<book>`节点添加到`<bookstore>`节点下,并保存更改。 示例代码: ```csharp XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("bookstore.xml"); XmlNode root = xmlDoc.SelectSingleNode("bookstore"); XmlElement xe1 = xmlDoc.CreateElement("book"); xe1.SetAttribute("genre", "李赞红"); xe1.SetAttribute("ISBN", "2-3631-4"); XmlElement xesub1 = xmlDoc.CreateElement("title"); xesub1.InnerText = "CS从入门到精通"; xe1.AppendChild(xesub1); XmlElement xesub2 = xmlDoc.CreateElement("author"); xesub2.InnerText = "候捷"; xe1.AppendChild(xesub2); XmlElement xesub3 = xmlDoc.CreateElement("price"); xesub3.InnerText = "58.3"; xe1.AppendChild(xesub3); root.AppendChild(xe1); xmlDoc.Save("bookstore.xml"); ``` 2. **修改节点** 要修改XML中的节点,我们可以遍历XML文档,找到目标节点并更新其属性或内容。在这个例子中,我们要修改genre属性为"李赞红"的`<book>`节点,将其genre属性更改为"update李赞红",并将该节点下的`<author>`子节点文本修改为"亚胜"。 示例代码: ```csharp XmlNodeList nodeList = xmlDoc.SelectSingleNode("bookstore").ChildNodes; foreach (XmlNode xn in nodeList) { XmlElement xe = (XmlElement)xn; if (xe.GetAttribute("genre") == "李赞红") { xe.SetAttribute("genre", "update李赞红"); XmlNodeList nls = xe.ChildNodes; foreach (XmlNode xn1 in nls) { XmlElement xe2 = (XmlElement)xn1; if (xe2.Name == "author") { xe2.InnerText = "亚胜"; break; } } break; } } xmlDoc.Save("bookstore.xml"); ``` 3. **删除节点** 删除节点通常涉及找到要删除的节点,然后使用`RemoveChild`方法将其从父节点中移除。例如,如果我们想删除genre为"update李赞红"的`<book>`节点,可以这样做: ```csharp XmlNodeList nodeList = xmlDoc.SelectSingleNode("bookstore").ChildNodes; foreach (XmlNode xn in nodeList) { XmlElement xe = (XmlElement)xn; if (xe.GetAttribute("genre") == "update李赞红") { root.RemoveChild(xe); break; } } xmlDoc.Save("bookstore.xml"); ``` 4. **查询节点** 查询XML文档中的特定节点通常使用XPath表达式。例如,要获取所有genre为"fantasy"的`<book>`节点,可以这样做: ```csharp XmlNodeList nodeList = xmlDoc.SelectNodes("//book[@genre='fantasy']"); foreach (XmlNode xn in nodeList) { Console.WriteLine("Genre: {0}, Title: {1}", xn.Attributes["genre"].Value, ((XmlElement)xn).SelectSingleNode("title").InnerText); } ``` 总结,C#提供了丰富的API来处理XML文件,包括`XmlDocument`类用于加载和保存XML,`XmlNode`和`XmlElement`类用于表示和操作XML节点。通过这些工具,开发者可以轻松地对XML数据进行增删改查操作,满足各种业务需求。在实际应用中,确保正确处理异常和错误,以及考虑性能优化,例如批量操作和缓存等策略。
- 粉丝: 10
- 资源: 935
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- yoloface大礼包使用pytroch实现的基于yolov3的轻量级人脸检测(包含关键点).zip
- java项目,课程设计-校园闲置物品交易网站.zip
- 基于WinPcap的Windows平台入侵检测系统设计与实现
- linux-编程基础知识
- java项目,课程设计-体质测试数据分析及可视化设计.zip
- Spring Boot Maven插件的使用.pdf
- YOLO9000更好、更快、更强 - 实时物体检测 9000 个类别!.zip
- 基于Arduino的智能花盆(实现对盆栽植物的自动浇水)+项目源码+文档说明
- java毕业设计基于springboot的高校科研管理系统源码+数据库+文档说明
- 资源来自:https://github.com/1990571096/SRCNN-Pytorch