C#如何遍历XDocument的所有子孙节点 Descendants()方法
发布时间 - 2026-01-13 00:00:00 点击率:次XDocument.Descendants()返回所有子孙元素节点(IEnumerable),仅含元素,忽略文本、注释等非元素节点;支持按名称或命名空间筛选,区别于仅查直接子元素的Elements()。
XDocument.Descendants() 方法用于获取文档中所有子孙元素节点(即递归查找所有嵌套层级的 ),它返回一个 IEnumerable,不包含文本节点、注释、处理指令等非元素节点。
Descendants() 只返回 XElement 节点
该方法只遍历并返回 XML 中的**元素(Element)节点**,忽略文本内容(XText)、CDATA、注释(XComment)、处理指令(XProcessingInstruction)等。如果需要访问所有类型节点(包括文本),需用 DescendantNodes() 或递归遍历 Node.Nodes()。
-
doc.→ 所有
Descendants()元素,无论嵌套多深 -
doc.DescendantNodes()→ 所有节点:元素、文本、注释、空白等 -
doc.Root?.DescendantsAndSelf()→ 包含根元素自身的所有后代元素(含自己)
按名称筛选特定子孙元素
可传入元素名(字符串或 XName)来只获取指定名称的子孙元素:
-
doc.Descendants("Book")→ 所有名为的元素(不管在哪一层) -
doc.Descendants(ns + "Title")→ 支持命名空间,ns是XNamespace实例 - 结果仍是
IEnumerable,可链式调用.Where()、.Select()等 LINQ 方法
遍历并处理每个子孙元素
典型用法是 foreach 遍历,或结合 LINQ 查询属性/内容:
foreach (var el in doc.Descendants()) { Console.WriteLine(el.Name); }var titles = doc.Descendants("Title").Select(t => t.Value).ToList();var emptyElements = doc.Descendants().Where(e => !e.HasElements && string.IsNullOrWhiteSpace(e.Value));
注意 Descendants() 和 Elements() 的区别
Elements() 只返回**直接子元素**(一层深度),而 Descendants() 是**全部后代元素**(任意深度):
-
root.Elements()→(仅一级) -
root.Descendants()→,,(所有层级) - 若想获取所有节点(含文本),改用
root.DescendantNodes(),再用node.GetType()判断类型
# node
# 区别
# c#
# String
# foreach
# 命名空间
# select
# xml
# 字符串
# 递归
# var
# console
# linq
# 遍历
# 链式
# 仍是
# 再用
# 不包含
# 需用
# 多深
# 文档
# ul
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
高性价比服务器租赁——企业级配置与24小时运维服务
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
如何用AI帮你把自己的生活经历写成一个有趣的故事?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何快速打造个性化非模板自助建站?
如何彻底卸载建站之星软件?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
Laravel如何创建自定义Artisan命令?(代码示例)
Android okhttputils现在进度显示实例代码
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何用搬瓦工VPS快速搭建个人网站?
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
如何在阿里云域名上完成建站全流程?
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
如何正确选择百度移动适配建站域名?
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何在腾讯云服务器快速搭建个人网站?
如何用VPS主机快速搭建个人网站?
python中快速进行多个字符替换的方法小结
如何基于云服务器快速搭建网站及云盘系统?
浅谈javascript alert和confirm的美化
如何在建站之星绑定自定义域名?
jQuery中的100个技巧汇总
高端智能建站公司优选:品牌定制与SEO优化一站式服务
Swift中swift中的switch 语句
Linux系统运维自动化项目教程_Ansible批量管理实战
微信推文制作网站有哪些,怎么做微信推文,急?
如何获取上海专业网站定制建站电话?
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
音响网站制作视频教程,隆霸音响官方网站?
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Laravel模型事件有哪些_Laravel Model Event生命周期详解
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
iOS正则表达式验证手机号、邮箱、身份证号等
如何快速搭建高效香港服务器网站?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法


Descendants()