新闻中心
C# 如何操作 XML 文件_C# XML 文件读写与操作教程
C#中操作XML常用XmlDocument、XDocument、XmlReader/Writer和XmlSerializer;2. XmlDocument适合中小型文件的增删改查;3. XDocument语法简洁,推荐新项目使用;4. XmlReader/Writer流式处理大文件,节省内存;5. XmlSerializer可序列化对象到XML或反向还原;6. 应根据场景选择合适方式并注意异常处理与资源释放。

在 C# 中操作 XML 文件非常常见,尤其是在配置文件处理、数据交换和序列化场景中。C# 提供了多种方式来读取、写入、修改和创建 XML 文件,主要通过 .NET Framework 中的 System.Xml 命名空间下的类来实现。本文将介绍几种常用的 XML 操作方法,帮助你快速上手 C# 对 XML 的读写与管理。
1. 使用 XmlDocument 读写 XML
XmlDocument 是一种基于 DOM(文档对象模型)的方式,适合处理中小型 XML 文件,支持随机访问和修改节点。
示例:创建并保存 XML 文件
using System.Xml;
<p>XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("Users");
doc.AppendChild(root);</p><p>XmlElement user = doc.CreateElement("User");
user.SetAttribute("Id", "1");
user.InnerText = "张三";
root.AppendChild(user);</p><p>doc.S*e("users.xml");</p>示例:读取 XML 文件内容
XmlDocument doc = new XmlDocument();
doc.Load("users.xml");
<p>XmlNodeList users = doc.SelectNodes("//User");
foreach (XmlNode node in users)
{
Console.WriteLine($"ID: {node.Attributes["Id"].Value}, Name: {node.InnerText}");
}</p>2. 使用 XDocument(LINQ to XML)更简洁地操作
XDocument 属于 LINQ to XML,语法更现代、简洁,推荐用于新项目。
示例:创建 XML 并保存
using System.Xml.Linq;
<p>XDocument doc = new XDocument(
new XElement("Users",
new XElement("User",
new XAttribute("Id", 1),
"张三"
)
)
);
doc.S*e("users.xml");</p>示例:读取并查询 XML
XDocument doc = XDocument.Load("users.xml");
var users = doc.Descendants("User");
<p>foreach (var user in users)
{
Console.WriteLine($"ID: {user.Attribute("Id").Value}, Name: {user.Value}");
}</p>示例:添加新节点
XDocument doc = XDocument.Load("users.xml");
doc.Root?.Add(
new XElement("User",
new XAttribute("Id", 2),
"李四"
)
);
doc.S*e("users.xml");
3. 使用 XmlReader 和 XmlWriter 高效读写大文件
当处理大型 XML 文件时,XmlReader 和 XmlWriter 是更好的选择,它们采用流式处理,内存占用低。
刺鸟创客
一款专业高效稳定的AI内容创作平台
110
查看详情
示例:用 XmlReader 读取数据
using System.Xml;
<p>using (XmlReader reader = XmlReader.Create("users.xml"))
{
while (reader.Read())
{
if (reader.IsStartElement() && reader.Name == "User")
{
string id = reader["Id"];
string name = reader.ReadElementContentAsString();
Console.WriteLine($"ID: {id}, Name: {name}");
}
}
}</p>示例:用 XmlWriter 写入 XML
using (XmlWriter writer = XmlWriter.Create("users.xml"))
{
writer.WriteStartDocument();
writer.WriteStartElement("Users");
<pre class='brush:php;toolbar:false;'>writer.WriteStartElement("User");
writer.WriteAttributeString("Id", "1");
writer.WriteString("张三");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();}
4. 序列化与反序列化对象为 XML
如果你有现成的类结构,可以使用 XmlSerializer 直接将对象保存为 XML 或从 XML 恢复对象。
定义类:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
序列化到 XML
User user = new User { Id = 1, Name = "张三" };
XmlSerializer serializer = new XmlSerializer(typeof(User));
<p>using (TextWriter writer = new St
reamWriter("user.xml"))
{
serializer.Serialize(writer, user);
}</p>从 XML 反序列化
XmlSerializer serializer = new XmlSerializer(typeof(User));
using (TextReader reader = new StreamReader("user.xml"))
{
User user = (User)serializer.Deserialize(reader);
Console.WriteLine($"ID: {user.Id}, Name: {user.Name}");
}
基本上就这些。根据你的需求选择合适的方法:小文件用 XDocument 最方便;大文件用 XmlReader/Writer 更高效;对象映射优先考虑 XmlSerializer。不复杂但容易忽略细节,比如命名空间、空值处理和编码问题,实际使用时注意检查异常和资源释放。
以上就是C# 如何操作 XML 文件_C# XML 文件读写与操作教程的详细内容,更多请关注其它相关文章!
# 流式
# 营销推广的目标量化
# 长沙网站推广方式
# 酒品营销推广策划方案
# 阜新关键词优化排名软件
# 店铺推广营销分析报告怎么写
# 黑酷黑帽seo
# 国际外贸推广 营销方案怎么写好
# 金融关键词搜索方法排名
# 什么网站有推广兼职的
# 郑州网站建设推广行吗
# 抽象类
# 是一种
# 是在
# c#
# 并保存
# 如何使用
# 大文件
# 信号量
# 序列化
# .net
# 内存占用
# 配置文件
# stream
# app
# 编码
# node
# xml
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
b站怎么取消点赞_b站点赞取消操作方法
使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战
虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画
从OpenAI API响应中高效提取生成文本
漫蛙2在线漫画入口 漫蛙正版漫画网页版直达
苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】
qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程
AO3最新可访问网址 Archive of Our Own官方在线入口
QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口
包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接
windows10怎么查看硬盘序列号_windows10硬盘id查询命令
Safari自带网页翻译功能怎么用 无需插件轻松看懂外文网站【方法】
抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明
J*aScript中在Map循环中检测并处理空数组元素
淘宝网网页版登录入口 淘宝官方网页版快捷登录
J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明
微信网页版登录教程_微信网页版登录入口在哪
顺丰快件物流信息 官方网站查询入口
C++ explicit关键字防止隐式转换_C++构造函数安全规范
深入理解J*a合成构造器:何时以及为何阻止其生成
动漫花园资源网使用步骤_动漫花园资源网下载流程
Python实现多节点属性重叠度分析教程
《刺客信条:影》PS5 Pro和Switch 2画面对比
C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责
天眼查企业查询官网入口 天眼查官方网页版查询
消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技
大麦的“候补”是什么意思 大麦候补购票规则【详解】
Lar*el 递归关系中排除指定分支的教程
Golang如何处理RPC请求负载均衡_Golang RPC请求负载均衡策略与实践
解决 MongoDB 聚合查询中对象数组 _id 匹配问题
一加 14R 快充无反应_一加 14R 充电优化
纯CSS与HTML网格布局的HTML精简策略:SVG与JS方案解析
Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑
构建轻量级网站内部消息系统:Formspree 集成指南
163邮箱注册官网 免费申请163个人邮箱
在FastAPI中利用lifespan与依赖注入高效管理Redis连接池
淘宝支付提示失败如何解决 淘宝支付流程优化方法
Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换
AO3网页版最新入口合集 Archive of Our Own在线访问指南
Golang如何使用const iota_Go iota常量计数器讲解
如何在网页中实现特定地点的随机图片展示
Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践
解决Django多数据库/多Schema环境下外键迁移问题
Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践
sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统
服务端验证_j*ascript输入检查
Yandex免登录网页版地址 Yandex搜索引擎官方访问入口
css链接悬停下划线样式如何自定义_使用::after结合content和transition
CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题
Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】


2025-11-06
浏览次数:次
返回列表
reamWriter("user.xml"))
{
serializer.Serialize(writer, user);
}</p>