新闻中心

C#怎么获取XML特定属性的值_C#查询XML节点特定属性值方法

2025-10-28
浏览次数:
返回列表
使用XmlDocument或XDocument可获取XML属性值:先加载XML,再通过XPath或LINQ定位节点,最后读取Attribute.Value;含命名空间时需声明XNamespace。

c#怎么获取xml特定属性的值_c#查询xml节点特定属性值方法

在C#中获取XML特定属性的值,可以通过多种方式实现,常用的方法包括使用 XmlDocumentXDocument(LINQ to XML)以及 XmlNodeReader。下面介绍几种实用且清晰的查询方法。

使用 XmlDocument 查询属性值

XmlDocument 适合处理结构较复杂的XML文件,通过XPath定位节点并读取属性。

示例XML:
<Books>
  <Book id="1" title="C#入门" author="张三" />
  <Book id="2" title="XML编程" author="李四" />
</Books>

获取第一个 Book 节点的 title 属性值:

XmlDocument doc = new XmlDocument();
doc.Load("books.xml"); // 或 LoadXml("字符串")

XmlNode node = doc.SelectSingleNode("/Books/Book");
if (node != null && node.Attributes["title"] != null)
{
    string title = node.Attributes["title"].Value;
    Console.WriteLine(title); // 输出:C#入门
}

查找 id="2" 的 Book 的 author 属性:

XmlNode node = doc.SelectSingleNode("/Books/Book[@id='2']");
if (node != null)
{
    string author = node.Attributes["author"].Value;
    Console.WriteLine(author); // 输出:李四
}

使用 LINQ to XML(XDocument)

XDocument 更现代,语法更简洁,推荐用于新项目。

XDocument xDoc = XDocument.Load("books.xml");

var book = xDoc.Descendants("Book")
               .FirstOrDefault(b => b.Attribute("id")?.Value == "2");

if (book != null)
{
    string title = book.Attribute("title")?.Value;
    Console.WriteLine(title); // 输出:XML编程
}

也可以直接遍历所有 Book 节点并提取属性:

Pinokio Pinokio

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

Pinokio 232 查看详情 Pinokio
var books = xDoc.Descendants("Book");
foreach (var b in books)
{
    string id = b.Attribute("id")?.Value;
    string title = b.Attribute("title")?.Value;
    Console.WriteLine($"ID: {id}, Title: {title}");
}

处理命名空间的XML

如果XML包含命名空间,必须在查询时指定。

示例带命名空间的XML:
<?xml version="1.0" encoding="utf-8"?>
<Books xmlns="http://example.com/ns">
  <Book id="1" title="Web开发" />
</Books>

正确读取方式:

XNamespace ns = "http://example.com/ns";
XDocument xDoc = XDocument.Load("books.xml");

var book = xDoc.Descendants(ns + "Book").FirstOrDefault();
if (book != null)
{
    string title = book.Attribute("title")?.Value;
    Console.WriteLine(title); // 输出:Web开发
}

小结与建议

选择哪种方式取决于你的场景:

  • 若项目较老或需兼容性,使用 XmlDocument
  • 若追求简洁和可读性,优先用 XDocument + LINQ
  • 注意处理属性可能为 null 的情况,使用 ?. 操作符避免异常
  • 带命名空间的XML务必声明并使用 XNamespace

基本上就这些,掌握 SelectSingleNode 和 Descendants 配合属性查询,就能应对大多数需求。

以上就是C#怎么获取XML特定属性的值_C#查询XML节点特定属性值方法的详细内容,更多请关注其它相关文章!


# 中文网  # 秦皇岛庆云网站建设  # 面试seo也太难了  # 苍溪亭子镇网站建设开发  # 优质网站建设工作总结  # 大湖县政府网站建设公告  # 惠州网站建设网站  # 南京网站优化的工资  # 抖音seo营销技术  # 网络建设网站有多快  # jou seo mok  # 可以直接  # c#  # 可以通过  # 相关文章  # 遍历  # 就能  # 第一个  # 序列化  # 李四  # 不带  # node  # xml 


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


相关推荐: qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程  处理Kafka消费者会话超时:深入理解消息处理语义与幂等性  夸克浏览器图书入口 夸克手机浏览器阅读入口  Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示  VS Code远程开发时如何处理文件权限问题  《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!  Animex动漫社网入口地址 Animex动漫社网正版在线入口  Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式  必由学官方平台入口 必由学在线课堂登录地址  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  淘宝网网页版登录入口 淘宝官方网页版快捷登录  Yandex免登录网页版地址 Yandex搜索引擎官方访问入口  Log4j Console Appender性能瓶颈与高并发优化策略  Go语言JSON解析深度指南:动态访问与结构体映射实践  单12V-2&#215;6实现为RTX 5090供电750W!甚至都没敢跑分  Promise错误处理:在catch后终止链式then执行的策略  CKEditor 5 自定义构建在React应用中渲染失败的调试与解决  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  蛙漫2台版漫画地址 Manwa2正版网页版链接  Linux如何构建多环境配置管理_Linux多环境配置方案  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  网站内容防复制粘贴的实现策略与局限性  小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】  Fabric模组开发:自定义物品与物品组的现代管理方法  快速CSGO开箱网站指南 CSGO开箱平台推荐  AO3官网镜像链接 Archive of Our Own同人文在线浏览  mc.js游戏直达 mc.js网页免下载版本秒进地址  J*aScript中如何高效提取对象指定属性  AI泡沫首次被“刺破”:GPU十年都无法存活!  如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit  漫蛙网页登录入口 漫蛙漫画官方授权网址  mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤  护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?  PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比  Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】  Composer如何解决json扩展缺失的错误  抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧  漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址  深入理解J*a链表中的IPosition接口与使用  谷歌学术网站直达地址 谷歌学术搜索网页版一键进入  J*a中实现Go语言select通道多路复用机制  聚水潭ERP登录页面入口 聚水潭ERP官网登录界面  Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】  Lar*el Excel导入时生成自定义递增ID的策略与实践  Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法  多闪网页版在线观看免费入口_多闪官网访问入口  MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令  京东单号查询入口_京东快递订单追踪入口  CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示 

搜索