C#中的SelectNodes和SelectSingleNode用法
发布时间 - 2026-01-14 00:00:00 点击率:次SelectNodes 返回 XmlNodeList(含零个或多个节点),SelectSingleNode 返回首个匹配 XmlNode 或 null;二者均需处理空值与命名空间。
SelectNodes 和 SelectSingleNode 是 .NET 中 XmlDocument 类提供的两个 XPath 查询方法,用于从 XML 文档中查找节点。它们不返回原始字符串或值,而是返回 XmlNodeList 或 XmlNode 对象,需进一步提取内容(如 InnerText、Attributes 等)。
SelectNodes:获取匹配的所有节点
返回一个 XmlNodeList,包含所有符合 XPath 表达式的节点。即使只匹配一个或零个节点,也始终返回列表(空列表或含多个项)。
- 适用于需要遍历多个同名元素的场景,比如读取所有
或所有 - 调用后应检查
Count属性,避免对空列表做索引访问引发异常 - 常见写法:
var nodes = doc.SelectNodes("//book/title");—— 查找所有元素(无论嵌套多深)
SelectSingleNode:只取第一个匹配节点
返回第一个匹配的 XmlNode,若无匹配则返回 null。适合确定唯一存在的节点(如根下的 或某个 ID 唯一的元素)。
- 必须判空再访问属性或子节点,否则可能触发
NullReferenceException - 注意它不保证“最深”或“最近”,而是按文档顺序返回首个匹配项
- 示例:
var node = doc.SelectSingleNode("/root/user[@id='123']/name");—— 查找 id=123 的 user 下的 name
XPath 表达式要点
两个方法都依赖 XPath 语法,常见用法包括:
-
/root/child:从根开始的绝对路径
-
//item:任意位置的(深度无关) -
./price:当前节点下的直接子节点 -
[@attr='value']:带属性筛选,如user[@active='true'] -
[1]:索引(XPath 从 1 开始),如//book[1]取第一个 book
命名空间处理(常被忽略)
如果 XML 含命名空间(如 xmlns="http://example.com/ns"),直接写 //book 会查不到节点。必须注册命名空间前缀并使用:
- 创建
XmlNamespaceManager,添加前缀映射:mgr.AddNamespace("x", "http://example.com/ns"); - 查询时带上前缀:
doc.SelectNodes("//x:book", mgr) - 否则方法返回空结果,且不报错,容易误判为数据缺失
# node
# c#
# .net
# NULL
# count
# 命名空间
# xml
# 字符串
# var
# 对象
# http
# 第一个
# 多个
# 首个
# 文档
# 遍历
# 适用于
# 报错
# 它不
# 最深
# 若无
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现一对一模型关联?(Eloquent示例)
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
,南京靠谱的征婚网站?
如何在Tomcat中配置并部署网站项目?
如何在香港服务器上快速搭建免备案网站?
如何续费美橙建站之星域名及服务?
如何快速搭建支持数据库操作的智能建站平台?
企业网站制作这些问题要关注
IOS倒计时设置UIButton标题title的抖动问题
微信小程序 配置文件详细介绍
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
如何选择可靠的免备案建站服务器?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
JS中对数组元素进行增删改移的方法总结
详解Oracle修改字段类型方法总结
打造顶配客厅影院,这份100寸电视推荐名单请查收
图册素材网站设计制作软件,图册的导出方式有几种?
如何快速搭建安全的FTP站点?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
如何在建站主机中优化服务器配置?
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
手机软键盘弹出时影响布局的解决方法
jQuery 常见小例汇总
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
动图在线制作网站有哪些,滑动动图图集怎么做?
电商网站制作价格怎么算,网上拍卖流程以及规则?
清除minerd进程的简单方法
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
在centOS 7安装mysql 5.7的详细教程
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
如何在云主机快速搭建网站站点?
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
Laravel怎么清理缓存_Laravel optimize clear命令详解
微信小程序 input输入框控件详解及实例(多种示例)
Android Socket接口实现即时通讯实例代码
*服务器网站为何频现安全漏洞?
如何在宝塔面板创建新站点?
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
再谈Python中的字符串与字符编码(推荐)
如何自定义建站之星模板颜色并下载新样式?
在线制作视频的网站有哪些,电脑如何制作视频短片?
三星、SK海力士获美批准:可向中国出口芯片制造设备
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
微信小程序 wx.uploadFile无法上传解决办法
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
javascript读取文本节点方法小结


