新闻中心

C# 如何查找具有特定属性值的xml节点

2025-10-28
浏览次数:
返回列表
使用XDocument和LINQ可高效查找特定属性值的XML节点,如通过Descendants和Where方法筛选name为Alice的Person节点,并用Attribute?.Value安全获取属性值。

c# 如何查找具有特定属性值的xml节点

在C#中查找具有特定属性值的XML节点,可以使用 System.Xml 命名空间中的 XDocumentXmlDocument 类。推荐使用 XDocument(LINQ to XML),语法更简洁直观。

使用 XDocument 和 LINQ 查找节点

假设你有如下XML内容:

<Root>
  <Person id="1" name="Alice" />
  <Person id="2" name="Bob" />
  <Person id="3" name="Alice" />
</Root>

你想查找 name 属性等于 "Alice" 的所有 Person 节点。

示例代码:

Pinokio Pinokio

Pinokio是一款开源的AI浏览器,可以安装运行各种AI模型和应用

Pinokio 232 查看详情 Pinokio
using System;
using System.Linq;
using System.Xml.Linq;

// 加载XML
XDocument doc = XDocument.Parse(xmlString); // 或 XDocument.Load("file.xml")

// 查找 name 属性为 "Alice" 的 Person 节点
var nodes = doc.Descendants("Person")
               .Where(e => e.Attribute("name")?.Value == "Alice");

foreach (var node in nodes)
{
    Console.WriteLine($"Found: {node.Attribute("id")?.Value}");
}

关键说明

  • Descendants("Person"):获取所有名为 Person 的后代节点。
  • e.Attribute("name")?.Value:安全获取属性值,避免空引用异常。
  • 支持复杂条件,比如同时匹配多个属性:
.Where(e => e.Attribute("name")?.Value == "Alice" &&
             e.Attribute("id")?.Value == "1")

使用 XPath(可选)

如果你熟悉 XPath,也可以用 XPathSelectElements

var nodes = doc.XPathSelectElements("//Person[@name='Alice']");

需要引入命名空间:System.Xml.XPath,并通过 NuGet 安装 System.Xml.XPath.XDocument 包。

处理属性不存在的情况

如果某些节点可能没有目标属性,建议判断属性是否存在:

.Where(e => {
    var attr = e.Attribute("name");
    return attr != null && attr.Value == "Alice";
})
基本上就这些方法,使用 LINQ to XML 是最清晰、灵活的方式。

以上就是C# 如何查找具有特定属性值的xml节点的详细内容,更多请关注其它相关文章!


# 你想  # 网站建设表格属性在哪找  # 遂宁市公司营销推广  # 京东推广如何优化营销策略  # 重庆抽水泵网站建设  # 海口网站建设公司名录  # 茶山全网推广营销中心招聘  # seo教程基础推广排名  # 福山区网络营销推广网站  # 泰安seo  # 漯河优惠网站优化公司  # 你有  # c#  # 推荐使用  # 可以用  # 多个  # 如果你  # 分片  # 客户端  # 重试  # 多线程  # node  # xml节点 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: c++如何使用TBB库进行任务并行_c++ Intel线程构建模块  QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录  如何使 Jest 模拟函数默认抛出错误以提高测试效率  漫蛙网页登录入口 漫蛙漫画官方授权网址  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台  Lar*el头像管理:图片缩放与旧文件删除的最佳实践  Python自定义类排序:解决lambda键值访问TypeError的实践指南  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接  Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区  PDF文件体积过大处理_PDF压缩技巧详解  CSS布局中意外空白:解决padding-top导致的顶部间距问题  MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具  Excel中VLOOKUP的第四个参数是干什么用的_Excel VLOOKUP第四参数作用解析  小红书网页版入口链接分享 小红书官网直接进  UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS  台积电1.4nm工艺A14瞄准2028:10年来性能提升80%  J*aScript数组对象转换:按指定键分组与值收集  Golang如何使用context实现超时取消_Golang context超时取消模式实践  高德地图怎么看全景照片_高德地图全景照片浏览教程  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  qq游戏免费畅玩入口_qq游戏电脑版快速启动  中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】  C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能  J*aScript map 迭代中检测空数组元素的有效方法  UC浏览器官网入口2025最新 UC浏览器网页版正式地址  Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】  C++如何解决segmentation fault_C++段错误调试与原因分析  sublime怎么覆盖插件的默认快捷键_sublime快捷键优先级与设置  LINUX下如何进行磁盘分区_fdisk与parted工具在LINUX中的使用对比  C++ map遍历方法大全_C++ map迭代器使用总结  使用Pandas转换并合并DataFrame:多列映射至统一结构  在VS Code中配置和运行Dart程序的完整步骤  2025-2030年全球乘用车销量预测:新能源成增长主力  海棠电脑版入口_通过电脑访问海棠官网阅读  Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  outlook中文官网入口地址 outlook官方中文版直达首页链接  精准捕获:如何在页面中监听除特定元素外的所有点击事件  抖音网页版怎么|直播|_抖音网页版开播操作指南  将HTML动态表格多行数据保存到Google Sheet的教程  Python Socket多播通信中指定源IP地址的实践指南  曝R星经典之作开发图 设计简陋但信息密集!  如何提高微信支付的安全性_微信支付安全防护与设置建议  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  京东单号查询入口_京东快递订单追踪入口  Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】  Win11怎么查看显卡显存 Win11显示适配器属性及专用视频内存查询  微博网页版首页入口 微博电脑端官网登录链接  Mac怎么使用表情符号_Mac Emoji快捷键面板 

搜索