在C#开发中,XML文件常用于存储配置信息、数据交互等场景,掌握XML文件的创建、读取和写入是基础且实用的技能。下面将分步骤介绍不同场景下的实现方法,并附上完整可运行的实例代码。

一、使用XmlDocument类操作XML文件
XmlDocument是.NET框架中处理XML文件的经典类,支持对XML节点的增删改查,适合需要灵活操作XML结构的场景。
1. 创建并写入XML文件
以下代码演示如何创建一个包含基础节点和属性的XML文件,并写入到本地磁盘:
using System;
using System.Xml;
namespace XmlDemo
{
class Program
{
static void Main(string[] args)
{
// 创建XmlDocument实例
XmlDocument xmlDoc = new XmlDocument();
// 创建XML声明节点
XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
xmlDoc.AppendChild(xmlDec);
// 创建根节点
XmlElement root = xmlDoc.CreateElement("Users");
xmlDoc.AppendChild(root);
// 创建子节点User
XmlElement user = xmlDoc.CreateElement("User");
// 给User节点添加属性
user.SetAttribute("Id", "1");
// 创建User下的子节点Name
XmlElement name = xmlDoc.CreateElement("Name");
name.InnerText = "张三";
user.AppendChild(name);
// 创建User下的子节点Age
XmlElement age = xmlDoc.CreateElement("Age");
age.InnerText = "25";
user.AppendChild(age);
// 将User节点添加到根节点
root.AppendChild(user);
// 保存XML文件到指定路径
xmlDoc.Save("D:/test.xml");
Console.WriteLine("XML文件创建并写入成功");
}
}
}2. 读取XML文件内容
读取上面创建的XML文件,获取节点内容和属性值的代码如下:
using System;
using System.Xml;
namespace XmlDemo
{
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
// 加载指定路径的XML文件
xmlDoc.Load("D:/test.xml");
// 获取根节点
XmlNode root = xmlDoc.SelectSingleNode("Users");
// 获取根节点下的所有User子节点
XmlNodeList userNodes = root.SelectNodes("User");
foreach (XmlNode userNode in userNodes)
{
// 获取User节点的Id属性
string userId = ((XmlElement)userNode).GetAttribute("Id");
// 获取User节点下Name子节点的内容
string userName = userNode.SelectSingleNode("Name").InnerText;
// 获取User节点下Age子节点的内容
string userAge = userNode.SelectSingleNode("Age").InnerText;
Console.WriteLine($"用户Id:{userId},姓名:{userName},年龄:{userAge}");
}
}
}
}二、使用StreamWriter类写入简单XML文件
如果只需要生成简单的XML文件,不需要复杂的节点操作,使用StreamWriter直接写入字符串会更轻量。
using System;
using System.IO;
namespace XmlDemo
{
class Program
{
static void Main(string[] args)
{
string xmlContent = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"\n" +
"\n" +
"李四 \n" +
"30 \n" +
" \n" +
" ";
// 使用StreamWriter写入文件,指定编码为UTF-8
using (StreamWriter sw = new StreamWriter("D:/simple_test.xml", false, System.Text.Encoding.UTF8))
{
sw.Write(xmlContent);
}
Console.WriteLine("简单XML文件写入成功");
}
}
}三、两种方法的适用场景对比
下面是两种XML操作方法的对比,方便开发者根据实际需求选择:
| 方法 | 优点 | 适用场景 |
|---|---|---|
| XmlDocument类 | 支持灵活的节点操作,可动态修改XML结构 | 需要频繁增删改XML节点、读取复杂XML结构的场景 |
| StreamWriter类 | 代码简单,性能轻量,无需加载整个XML到内存 | 仅需生成固定格式的XML文件,不需要后续修改的场景 |
实际开发中可以根据需求选择合适的方法,两种方式的实例代码都可以直接复制运行,只需要修改文件路径即可适配自己的项目。
C#XMLXmlDocumentStreamWriter文件操作修改时间:2026-05-29 04:39:35