0

0

C#如何使用SelectNodes和SelectSingleNode方法

星降

星降

发布时间:2026-01-08 12:11:02

|

572人浏览过

|

来源于php中文网

原创

SelectNodes和SelectSingleNode是XmlNode类的XPath查询方法,仅适用于XmlDocument体系;需先加载XML、处理命名空间(用XmlNamespaceManager注册前缀),SelectSingleNode返回首个匹配节点(可能为null),SelectNodes返回只读XmlNodeList集合。

c#如何使用selectnodes和selectsinglenode方法

C#中使用SelectNodesSelectSingleNode方法,前提是操作XML文档(如XmlDocumentXDocument),但要注意:这两个方法属于XmlNode类(即XmlDocument体系),不适用于LINQ to XML(XDocument)。下面以XmlDocument为例说明用法和关键细节。

确保XML文档已加载并支持XPath

这两个方法依赖XPath表达式进行节点查找,必须先用LoadLoadXml正确加载XML,且文档结构合法。若XML有命名空间,需配合XmlNamespaceManager注册前缀,否则XPath匹配会失败。

  • 直接加载字符串:doc.LoadXml("");
  • 加载文件:doc.Load("data.xml");
  • 未处理命名空间时,//item可能返回空——即使节点存在

SelectSingleNode返回第一个匹配节点

该方法返回XmlNode类型,匹配不到时返回null,适合确定最多一个结果的场景(如找唯一配置项、根下特定子元素)。

动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版
动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版

动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包

下载
  • 基础用法:XmlNode node = doc.SelectSingleNode("/root/item");
  • 带属性筛选:doc.SelectSingleNode("//item[@id='1']");
  • 务必判空再访问属性或子节点,避免NullReferenceException
  • 不支持默认命名空间简写;若XML含xmlns="http://abc",必须声明前缀并使用

SelectNodes返回节点集合

返回XmlNodeList(只读集合),可用foreach或索引访问。注意它不是IEnumerable,不能直接用LINQ方法,需转成列表再处理。

  • 获取所有同名节点:XmlNodeList list = doc.SelectNodes("//item");
  • 遍历示例:foreach (XmlNode n in list) { Console.WriteLine(n.Attributes["id"]?.Value); }
  • 转换为List便于LINQ:var nodes = list.Cast().ToList();
  • 性能提示:XPath执行是即时的,多次调用相同XPath不会缓存,可提取为变量复用

命名空间处理是常见坑点

当XML包含默认命名空间(如),直接写/root查不到节点。必须用XmlNamespaceManager绑定前缀,并在XPath中使用该前缀。

  • 注册命名空间:var nsMgr = new XmlNamespaceManager(doc.NameTable); nsMgr.AddNamespace("ns", "http://myns");
  • 带前缀查询:doc.SelectSingleNode("/ns:root/ns:item", nsMgr);
  • 忽略命名空间的写法(不推荐):"*[local-name()='item']",但可读性和性能较差

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

231

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

435

2024.03.01

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

41

2025.12.04

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1866

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2084

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

965

2024.11.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

253

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

206

2023.09.04

Golang 分布式缓存与高可用架构
Golang 分布式缓存与高可用架构

本专题系统讲解 Golang 在分布式缓存与高可用系统中的应用,涵盖缓存设计原理、Redis/Etcd集成、数据一致性与过期策略、分布式锁、缓存穿透/雪崩/击穿解决方案,以及高可用架构设计。通过实战案例,帮助开发者掌握 如何使用 Go 构建稳定、高性能的分布式缓存系统,提升大型系统的响应速度与可靠性。

27

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 6.6万人学习

前端基础到实战(HTML5+CSS3+ES6+NPM)
前端基础到实战(HTML5+CSS3+ES6+NPM)

共162课时 | 18.6万人学习

第二十二期_前端开发
第二十二期_前端开发

共119课时 | 12.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号