新闻中心
C#怎么读取XML文件 C# LINQ to XML使用方法
最推荐使用 LINQ to XML(XDocument/XElement),因其语法简洁、支持查询修改;可用Load()/Parse()加载,Element()/Descendants()/Attribute()查找,手动映射对象更灵活,支持增删改后S*e()保存。

用 C# 读取 XML 文件,最推荐的方式是使用 LINQ to XML(即 XDocument 和 XElement),它语法简洁、功能强大、支持查询和修改,比传统的 XmlDocument 或 XmlReader 更直观易用。
加载 XML 文件(本地或字符串)
用 XDocument.Load() 读取磁盘上的 XML 文件,或用 XDocument.Parse() 解析 XML 字符串:
XDocument doc = XDocument.Load("config.xml");XDocument doc = XDocument.Parse("<root><item id="1">A</item></root>");
如果文件编码不是 UTF-8,建议先用 StreamReader 指定编码再传入:
using var sr = new StreamReader("data.xml", Encoding.UTF8);<br>
XDocument doc = XDocument.Load(sr);
查找元素和属性(XPath 风格 + LINQ 查询)
常用方法有:Element()(直接子元素)、Elements()(所有匹配子元素)、Descendants()(任意层级后代)、Attribute() 获取属性值:
-
var root = doc.Root;—— 获取根元素 -
var title = doc.Root?.Element("Title")?.Value;—— 安全获取子元素文本 -
var ids = doc.Descendants("User").Attributes("id").Select(a => a.Value).ToList();—— 提取所有 User 的 id 属性值 var activeUsers = doc.Descendants("User").Where(u => u.Attribute("status")?.Value == "active");
将 XML 映射为对象(反序列化简化版)
不依赖 XmlSerializer,可用 LINQ to XML 手动构造对象,更灵活:
MCP市场
中文MCP工具聚合与分发平台
211
查看详情
- 定义类:
public class Product { public string Name { get; set; } public decimal Price { get; set; } } - 解析:
var products = doc.Descendants("Product")<br> .Select(p => new Product {<br> Name = p.Element("Name")?.Value,<br> Price = decimal.TryParse(p.Element("Price")?.Value, out var v) ? v : 0<br> }).ToList();
这种方式可跳过空元素、做类型转换、加默认值,比全自动反序列化容错性更强。
修改并保存 XML
LINQ to XML 支持在内存中增删改,最后调用 S*e() 写回文件:
doc.Root?.Add(new XElement("NewItem", new XAttribute("type", "test"), "content"));doc.Root?.Element("OldItem")?.Remove();-
doc.S*e("updated.xml");—— 默认带声明,如需省略 XML 声明,用doc.S*e(XmlWriter.Create("file.xml", new XmlWriterSettings { OmitXmlDeclaration = true }))
基本上就这些。LINQ to XML 不复杂但容易忽略细节:注意空引用(用 ?. 安全链)、区分 Element 和 Elements、慎用 Descendants(性能敏感时优先用层级路径)。写得清楚,读起来就顺。
以上就是C#怎么读取XML文件 C# LINQ to XML使用方法的详细内容,更多请关注其它相关文章!
# stream
# 惠南工业区机械网站推广
# 娜娜游戏网站建设论文
# 长沙企业网站建设行业
# seo优化需要关注什么数据
# 清远网站建设方案书
# 南开区微信营销推广系统
# 义乌网站seo优化推广
# 惠州网络整合营销推广中心
# 写得
# 如需
# 解决问题
# 中文网
# 相关文章
# 推荐使用
# 序列化
# 加载
# 更灵活
# 有什么区别
# c#
# 编码
# 太仓网站建设推广专家
# 最新知网关键词检索排名
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
微博网页版首页入口 微博电脑端官网登录链接
J*aScript中管理异步API调用:确保操作顺序与数据一致性
ExcelARRAYTOTEXT函数怎么自定义分隔符输出数组文本_ARRAYTOTEXT实现动态生成SQL语句
MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景
狙击外星人小游戏开始_狙击外星人小游戏立即开始
vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧
Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法
QQ邮箱登录官网首页 腾讯QQ邮箱网页入口
抖音怎么赚钱_抖音创作者变现方法与途径指南
vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法
windows10怎么查看硬盘序列号_windows10硬盘id查询命令
限制HTML日期输入框的日期选择范围
React Router 嵌套组件中 URL 重定向问题的解决方案
Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】
如何在Promise链中有效终止错误处理后的执行
C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用
淘宝支付提示失败如何解决 淘宝支付流程优化方法
Python类型检查:优化关联可选属性的Mypy推断策略
拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法
HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解
顺丰快递查单号物流信息 顺丰快递小程序查询入口
Win11怎么开启高性能模式_Windows 11电源计划优化设置
解决Python单元测试中Mock异常方法调用计数为零的问题
win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法
mysql备份恢复性能优化_mysql备份恢复性能优化方法
从OpenAI API响应中高效提取生成文本
b站怎么取消点赞_b站点赞取消操作方法
Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组
红果短剧网页版官网入口 官方最新网址发布
Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐
qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程
实现全屏滚动与导航点:专业教程
CSS图片焦点样式实现教程:理解与应用tabindex属性
mcjs网页版在线存档 mcjs云存档登录入口
PHP中高效并行检查多链接状态的教程
马斯克:Optimus 人形机器人复数形式为 Optimi
大象笔记网页版入口 印象笔记网页版登录入口
KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程
深入理解J*a链表中的IPosition接口与使用
c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学
Win11怎么关闭快速启动_Win11彻底关机设置教程
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
poki网页游戏推荐_poki免费游戏平台入口
Win11怎么开启省电模式_Win11电池节电模式自动开启
ArrayList与LinkedList操作复杂度详解:遍历与修改
J*a递归快速排序中静态变量导致数据累积问题的解决方案
c++中的std::basic_string的SSO优化_c++短字符串优化深度解析
AWS EC2实例间SQL Server连接超时:安全组配置与故障排除指南
俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达
神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正


2025-12-15
浏览次数:次
返回列表