新闻中心

C# 如何操作 XML 文件_C# XML 文件读写与操作教程

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

c# 如何操作 xml 文件_c# xml 文件读写与操作教程

在 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 文件时,XmlReaderXmlWriter 是更好的选择,它们采用流式处理,内存占用低。

刺鸟创客 刺鸟创客

一款专业高效稳定的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 StreamWriter("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盘制作教程【详解】 

搜索