C#中的SelectNodes和SelectSingleNode用法
#技术教程 发布时间: 2026-01-14
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:只取第一个匹配节点
返回第一个匹配的 XmlNod,若无匹配则返回
enull。适合确定唯一存在的节点(如根下的 或某个 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) - 否则方法返回空结果,且不报错,容易误判为数据缺失
上一篇 : css 文本居中多行怎么办_text-align center 与 line-height 配合
下一篇 : 千焦大卡转换计算器公式_千焦转千卡计算器1kJ÷4.184=大卡
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!