导读:本期聚焦于小伙伴创作的《C#如何读写XML文件?C#操作XML节点有哪些实用实例?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#如何读写XML文件?C#操作XML节点有哪些实用实例?》有用,将其分享出去将是对创作者最好的鼓励。

在C#开发中,XML文件常被用来存储配置信息、数据交换内容,掌握XML文件的读写和节点操作是开发者的必备技能,常用的操作方式是基于System.Xml命名空间下的XmlDocument类实现。

C#如何读写XML文件?C#操作XML节点有哪些实用实例?

C#读写XML文件的核心类准备

首先需要引入对应的命名空间,所有XML相关操作都依赖System.Xml,代码开头需要添加引用:

using System.Xml;

创建并写入XML文件实例

下面的示例会创建一个包含学生信息的XML文件,并写入到本地磁盘:

// 创建XmlDocument对象
XmlDocument xmlDoc = new XmlDocument();
// 创建XML声明节点
XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
xmlDoc.AppendChild(xmlDec);
// 创建根节点
XmlElement root = xmlDoc.CreateElement("Students");
xmlDoc.AppendChild(root);
// 创建第一个学生节点
XmlElement student1 = xmlDoc.CreateElement("Student");
// 设置学生节点的属性
student1.SetAttribute("Id", "1");
// 创建子节点
XmlElement name1 = xmlDoc.CreateElement("Name");
name1.InnerText = "张三";
XmlElement age1 = xmlDoc.CreateElement("Age");
age1.InnerText = "20";
// 组装节点
student1.AppendChild(name1);
student1.AppendChild(age1);
root.AppendChild(student1);
// 创建第二个学生节点
XmlElement student2 = xmlDoc.CreateElement("Student");
student2.SetAttribute("Id", "2");
XmlElement name2 = xmlDoc.CreateElement("Name");
name2.InnerText = "李四";
XmlElement age2 = xmlDoc.CreateElement("Age");
age2.InnerText = "21";
student2.AppendChild(name2);
student2.AppendChild(age2);
root.AppendChild(student2);
// 保存XML文件到指定路径
xmlDoc.Save("D:/students.xml");

读取XML文件内容实例

读取上面生成的XML文件,获取所有学生的信息:

// 加载XML文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("D:/students.xml");
// 获取根节点
XmlElement root = xmlDoc.DocumentElement;
// 获取所有Student节点
XmlNodeList studentNodes = root.SelectNodes("Student");
// 遍历节点输出信息
foreach (XmlNode node in studentNodes)
{
    // 获取节点属性
    string id = node.Attributes["Id"].Value;
    // 获取子节点内容
    string name = node.SelectSingleNode("Name").InnerText;
    string age = node.SelectSingleNode("Age").InnerText;
    Console.WriteLine($"学生ID:{id},姓名:{name},年龄:{age}");
}

修改XML节点实例

修改ID为1的学生年龄,将年龄更新为22:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("D:/students.xml");
// 查找ID为1的Student节点
XmlNode targetNode = xmlDoc.SelectSingleNode("/Students/Student[@Id='1']");
if (targetNode != null)
{
    // 修改Age子节点的内容
    XmlNode ageNode = targetNode.SelectSingleNode("Age");
    if (ageNode != null)
    {
        ageNode.InnerText = "22";
    }
    // 保存修改
    xmlDoc.Save("D:/students.xml");
    Console.WriteLine("修改完成");
}

新增和删除XML节点实例

新增节点

新增一个ID为3的学生节点:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("D:/students.xml");
XmlElement root = xmlDoc.DocumentElement;
// 创建新学生节点
XmlElement newStudent = xmlDoc.CreateElement("Student");
newStudent.SetAttribute("Id", "3");
XmlElement newName = xmlDoc.CreateElement("Name");
newName.InnerText = "王五";
XmlElement newAge = xmlDoc.CreateElement("Age");
newAge.InnerText = "19";
newStudent.AppendChild(newName);
newStudent.AppendChild(newAge);
root.AppendChild(newStudent);
xmlDoc.Save("D:/students.xml");
Console.WriteLine("新增节点完成");

删除节点

删除ID为3的学生节点:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("D:/students.xml");
XmlElement root = xmlDoc.DocumentElement;
// 查找要删除的节点
XmlNode delNode = xmlDoc.SelectSingleNode("/Students/Student[@Id='3']");
if (delNode != null)
{
    root.RemoveChild(delNode);
    xmlDoc.Save("D:/students.xml");
    Console.WriteLine("删除节点完成");
}

注意事项

  • 操作XML文件时需要确保文件路径存在,否则会抛出文件未找到异常
  • 使用SelectSingleNode方法时,XPath表达式要符合规范,否则无法找到对应节点
  • 修改XML内容后需要调用Save方法才会将改动写入文件,否则改动仅在内存中生效
  • 读取节点内容前最好先判断节点是否为空,避免空引用异常

C#XML读写XML节点操作XmlDocument修改时间:2026-06-10 18:33:33

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。