在C#开发中,处理XML文件是常见的数据操作场景,删除XML文件中的指定节点是其中较为高频的需求,无论是配置文件清理还是业务数据更新都可能用到该操作。下面将通过具体步骤和代码示例讲解完整的实现方法。

核心实现思路
删除XML指定节点的核心流程分为三步:首先加载目标XML文件到内存对象,然后定位到需要删除的指定节点,最后执行删除操作并保存修改后的文件。C#中操作XML最常用的类是XmlDocument,它提供了完整的DOM操作能力,适合处理各类XML节点操作需求。
完整操作步骤
1. 加载XML文件
首先需要将本地或内存中的XML文件加载到XmlDocument实例中,通过Load方法可以加载指定路径的文件,也可以通过LoadXml方法加载XML格式的字符串。
2. 定位目标节点
可以使用SelectSingleNode方法查找单个目标节点,或者使用SelectNodes方法查找多个符合条件的节点。查找时支持XPath语法,能够精准定位不同层级、不同属性的节点。
3. 执行删除操作
找到目标节点后,需要通过其父节点的RemoveChild方法删除该节点,删除完成后调用Save方法将修改同步到原文件或新文件中。
代码示例
假设我们有如下内容的XML文件,路径为D:/test.xml:
<?xml version="1.0" encoding="utf-8"?>
<root>
<user id="1">
<name>张三</name>
<age>25</age>
</user>
<user id="2">
<name>李四</name>
<age>30</age>
</user>
</root>
下面的代码实现删除id为1的user节点:
using System;
using System.Xml;
namespace XmlOperateDemo
{
class Program
{
static void Main(string[] args)
{
// 创建XmlDocument实例
XmlDocument xmlDoc = new XmlDocument();
// 加载XML文件
string xmlPath = "D:/test.xml";
xmlDoc.Load(xmlPath);
// 查找id为1的user节点,XPath语法定位属性为id=1的user节点
XmlNode targetNode = xmlDoc.SelectSingleNode("/root/user[@id='1']");
if (targetNode != null)
{
// 获取目标节点的父节点
XmlNode parentNode = targetNode.ParentNode;
// 从父节点中移除目标节点
parentNode.RemoveChild(targetNode);
// 保存修改后的XML文件
xmlDoc.Save(xmlPath);
Console.WriteLine("节点删除成功");
}
else
{
Console.WriteLine("未找到目标节点");
}
}
}
}
批量删除节点示例
如果需要删除所有age大于25的user节点,可以使用SelectNodes方法获取所有符合条件的节点,然后遍历删除:
using System;
using System.Xml;
namespace XmlOperateDemo
{
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
string xmlPath = "D:/test.xml";
xmlDoc.Load(xmlPath);
// 查找所有age大于25的user节点
XmlNodeList targetNodes = xmlDoc.SelectNodes("/root/user[age>25]");
if (targetNodes != null && targetNodes.Count > 0)
{
// 遍历节点集合,注意要从后往前删除避免索引错乱
for (int i = targetNodes.Count - 1; i >= 0; i--)
{
XmlNode node = targetNodes[i];
node.ParentNode.RemoveChild(node);
}
xmlDoc.Save(xmlPath);
Console.WriteLine($"共删除{targetNodes.Count}个节点");
}
else
{
Console.WriteLine("未找到符合条件的节点");
}
}
}
}
注意事项
- 如果XML文件带有命名空间,需要在
XmlDocument中声明命名空间管理器,否则XPath查找会失败。 - 删除节点前建议先判断节点是否存在,避免出现空引用异常。
- 批量删除节点时,不要直接遍历原节点集合删除,建议从后往前遍历或者使用临时集合存储待删除节点,避免索引错乱。
- 操作完成后一定要调用
Save方法,否则修改只会存在于内存中,不会同步到文件。
C#XML删除节点XmlDocument修改时间:2026-07-17 15:39:26