C#如何用XPath选中特定属性值的节点


在C#中用XPath选中特定属性值节点需用@属性名='值'语法,XmlDocument适用于.NET Framework,XDocument(需引用System.Xml.XPath)推荐用于.NET Core/5+,注意命名空间、大小写敏感、引号转义及特殊字符处理。

c#如何用xpath选中特定属性值的节点

在C#中使用XPath选中特定属性值的节点,核心是通过@属性名='值'语法构造XPath表达式,并配合XmlDocumentXDocument执行查询。

使用XmlDocument + SelectNodes/SelectSingleNode

适用于传统.NET Framework项目或需要兼容老代码的场景。注意XML命名空间、大小写敏感性和引号转义问题。

  • 加载XML后调用SelectNodes()(返回节点集合)或SelectSingleNode()(返回首个匹配节点)
  • 属性匹配写法:例如"//book[@category='fiction']"选中所有<book></book>category属性值为fiction的节点
  • 若属性值含单引号,改用双引号包裹XPath;含双引号则用单引号包裹,或使用concat()函数拼接
  • 示例:doc.SelectNodes("//user[@id='1024' and @active='true']")可同时匹配多个属性条件

使用XDocument + XPathSelectElements/XPathSelectElement

推荐用于.NET Core/.NET 5+项目,需引用System.Xml.XPath.XDocument扩展包(.NET Standard 2.0+已内置)。

TextIn Tools TextIn Tools

是一款免费在线OCR工具,包含文字识别、表格识别,PDF转文件,文件转PDF、其他格式转换,识别率高,体验好,免费。

TextIn Tools 164 查看详情 TextIn Tools
  • 调用XDocument.XPathSelectElements(string xpath)获取IEnumerable<xelement></xelement>
  • 支持更现代的XPath 1.0语法,写法与XmlDocument基本一致,如"//product[@inStock='yes']"
  • 对命名空间敏感——若XML有默认命名空间,必须注册XNamespace并参与查询,否则查不到节点
  • 示例:var ns = XNamespace.Get("http://example.com/ns"); doc.XPathSelectElements($"//{ns}item[@type='book']")

处理常见陷阱

实际使用中容易因细节出错,重点关注以下几点:

  • 属性名和值严格区分大小写:XPath中@Class@class,XML源中怎么写就怎么查
  • 空格和前后缀不影响匹配:但属性值本身含空格时需完整写出,如@role=' admin '只能匹配值两端带空格的节点
  • 特殊字符需转义:属性值含&等,应在原始XML中已实体化(如<code>&amp;),XPath中直接写"@desc='C&C++'"
  • 通配符可用但谨慎:如"//node[@id[starts-with(.,'U_')]]"匹配id以U_开头的节点,避免过度使用//影响性能

完整小例子(XDocument方式)

假设XML字符串为<root><item id="A001" type="widget">OK</item><item id="B002" type="gadget">NG</item></root>

var doc = XDocument.Parse(xml);
var target = doc.XPathSelectElement("//item[@type='widget']");
if (target != null) Console.WriteLine(target.Value); // 输出 "OK"

以上就是C#如何用XPath选中特定属性值的节点的详细内容,更多请关注其它相关文章!


# 双引号  # 贵溪关键词万词霸屏排名  # seo低咖啡因  # 有人在用营销推广软件吗  # seo查询SEO优化  # 宁波网站建设与规划  # 玩偶营销推广策略怎么写  # 丽水营销推广公司排名前十  # 外贸营销推广公司海北  # 黑猫seo教程视频  # 2017网站seo原则  # 相关文章  # 多个  # node  # 单引号  # 特殊字符  # 如何判断  # 适用于  # 如何用  # 为空  # 如何选择  # .net  # c#  # c++  # go 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 如何在Python中安全地将环境变量转换为整数并满足Mypy类型检查  《气泡星球》兑换码礼包大全  实时数据流中高效查找最小值与最大值  《地下城堡4:骑士与破碎编年史》墓穴挑战125攻略  《环球网校》设置报考省市方法  《兴业银行》注册登录方法  Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置  怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】  c++20的指定初始化(Designated Initializers)怎么用_c++ C风格结构体初始化  Windows自带的便笺数据如何备份_防止数据丢失的便利贴迁移教程【干货】  《饿了么》拼好饭点外卖教程2025  mysql归档数据怎么导出为csv_mysql归档数据导出为csv文件的方法  在Django中动态检查模型关联:一种灵活的解决方案  AO3永久镜像入口开放_AO3最新网址兼容所有浏览器  QQ邮箱手机版网页版 QQ邮箱登录入口地址  英国搜索:多数英国人认为语言搜索是未来搜索  虫虫助手如何更新游戏  Python中处理嵌套字典与列表的数据提取与过滤教程  Lar*el怎么实现全文搜索_Lar*el Scout集成Algolia教程  126邮箱申请入口官网_126邮箱注册免费登录2025  悟空浏览器网页版在线工具 悟空浏览器网页版在线平台入口  如何查找哪个composer包引入了特定的依赖?  sublime如何配置PHP开发环境_在sublime中运行与调试PHP代码  如何查询个人病历记录  《虎扑》关闭社区内容推荐方法  创建快捷方式启动系统保护  动漫岛汉化官网网 动漫岛官方动漫汉化地址  感染了幽门螺杆菌一定会导致胃癌吗?蚂蚁庄园今日答案最新11.30  126手机126邮箱登录_126邮箱手机登录入口官网  个人所得税办理入口 个人所得税综合所得年度汇算入口  歌词怎么展示在|直播|间视频号?有什么注意事项?  《绝区零》2.3前瞻|直播|内容介绍  百度网盘网页入口链接分享 百度网盘官网入口网页登录  高德地图怎么查看未来行程规划_高德地图未来行程规划查看方法  晓晓优选app支付宝绑定方法  圆通快递官方入口不需要登录 在线查询入口快速查询  《蓝色星原:旅谣》坐骑获取攻略  使用TinyButStrong生成HTML并结合Dompdf创建PDF教程  抖音赚钱快速入门_新手必看的抖音赚钱步骤  冬季去寒冷地区旅游,以下哪种做法有助于缓解冻伤  《随手记》启用语音备注方法  GBA模拟器手柄按键设置  抖音手机分身两个账号怎么切换?分身两个系统是一样的吗?  MacBook Pro词典使用指南  Go App Engine 项目结构与包管理深度指南  J*aScript模块加载器_RequireJS原理分析  《知到》打卡课程方法  抖音号升级企业号怎么改名字?升级企业号有哪些好处?  Sublime怎么自动添加CSS前缀_Sublime安装Autoprefixer插件  蛙漫2(台版)正版官网 2025免费网页版分享 

 2025-12-20

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.