新闻中心

C#怎么读取XML文件 C# LINQ to XML使用方法

2025-12-15
浏览次数:
返回列表
最推荐使用 LINQ to XML(XDocument/XElement),因其语法简洁、支持查询修改;可用Load()/Parse()加载,Element()/Descendants()/Attribute()查找,手动映射对象更灵活,支持增删改后S*e()保存。

c#怎么读取xml文件 c# linq to xml使用方法

用 C# 读取 XML 文件,最推荐的方式是使用 LINQ to XML(即 XDocumentXElement),它语法简洁、功能强大、支持查询和修改,比传统的 XmlDocumentXmlReader 更直观易用。

加载 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市场

中文MCP工具聚合与分发平台

MCP市场 211 查看详情 MCP市场
  • 定义类: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 不复杂但容易忽略细节:注意空引用(用 ?. 安全链)、区分 ElementElements、慎用 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搜索引擎官网一键直达  神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正 

搜索