新闻中心

C#如何使用XPath从XML中筛选数据_C#使用XPath筛选XML数据教程

2025-11-04
浏览次数:
返回列表
使用XmlDocument和XPath可高效筛选XML数据,如SelectNodes("//Book")提取所有书籍节点,结合XmlNamespaceManager处理命名空间,或通过XDocument配合XPath扩展方法查询带条件的元素。

c#如何使用xpath从xml中筛选数据_c#使用xpath筛选xml数据教程

在C#中使用XPath筛选XML数据是一种高效且灵活的方法,尤其适用于需要从结构化XML文档中提取特定节点或属性的场景。通过System.Xml命名空间中的类,如XDocumentXmlDocumentXmlNode,你可以结合XPath表达式快速定位所需数据。

加载XML并使用XPath查询

要使用XPath,首先需要加载XML文档。推荐使用XmlDocument类,因为它原生支持XPath查询。

以下是一个基本示例:

using System;
using System.Xml;

class Program
{
    static void Main()
    {
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(@"
            <Books>
                <Book id='1'>
                    <Title>C#入门经典</Title>
                    <Author>张三</Author>
                    <Price>89.00</Price>
                </Book>
                <Book id='2'>
                    <Title>深入理解C#</Title>
                    <Author>李四</Author>
                    <Price>75.50</Price>
                </Book>
            </Books>");

        // 使用XPath选择所有Book节点
        XmlNodeList books = doc.SelectNodes("//Book");

        foreach (XmlNode book in books)
        {
            string title = book["Title"]?.InnerText;
            string author = book["Author"]?.InnerText;
            string price = book["Price"]?.InnerText;
            Console.WriteLine($"书名:{title},作者:{author},价格:{price}");
        }
    }
}

常用XPath表达式语法

XPath提供强大的路径匹配能力,以下是在C#中常用的表达式:

  • //Book:选择所有名为Book的节点,无论层级
  • /Books/Book:选择根节点下Books中的直接子节点Book
  • //Book[@id='1']:选择id属性为1的Book节点
  • //Book[Price > 80]:选择价格大于80的书籍(支持简单逻辑判断)
  • //Book[1]:选择第一个Book节点(索引从1开始)
  • //Book/Title/text():获取所有Title元素的文本内容

通过命名空间处理带前缀的XML

如果XML包含命名空间,必须在查询时注册XmlNamespaceManager,否则XPath无法正确匹配。

示例:

VALL-E VALL-E

VALL-E是一种用于文本到语音生成 (TTS) 的语言建模方法

VALL-E 134 查看详情 VALL-E
XmlDocument doc = new XmlDocument();
doc.LoadXml(@"
    <root xmlns:bk='http://example.com/books'>
        <bk:Book>
            <bk:Title>ASP.NET教程</bk:Title>
        </bk:Book>
    </root>");

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("bk", "http://example.com/books");

XmlNode node = doc.SelectSingleNode("//bk:Title", nsmgr);
Console.WriteLine(node?.InnerText); // 输出:ASP.NET教程

使用XDocument与XPath的结合(需引用System.Xml.XPath)

XDocument更现代,但需要引入System.Xml.XPath扩展方法才能使用XPath。

确保添加引用:

using System.Xml.Linq;
using System.Xml.XPath;

示例代码:

XDocument xDoc = XDocument.Parse(@"
    <Books>
        <Book category='programming'>
            <Title>C#高级编程</Title>
        </Book>
    </Books>");

var query = xDoc.XPathSelectElements("//Book[@category='programming']");
foreach (var book in query)
{
    Console.WriteLine(book.Element("Title")?.Value);
}

基本上就这些。掌握XPath语法和C#中的查询方式后,就能高效地从复杂XML中提取所需信息。注意路径写法、命名空间处理和数据类型转换,避免空引用异常。不复杂但容易忽略细节。

以上就是C#如何使用XPath从XML中筛选数据_C#使用XPath筛选XML数据教程的详细内容,更多请关注其它相关文章!


# 是在  # 荷塘区网站营销推广  # 长宁网站建设开发  # 抖音seo 算法  # 做微店推广的网站哪个好  # 广西婚庆网站建设方案  # 甘肃seo服务公司排名  # 德阳市整合营销推广  # ai++seo优化  # seo优化营销方式  # seo设置怎么写  # 第一个  # 你可以  # c#  # 文档  # 加载  # 是一个  # 不带  # 所需  # 是一种  # 如何使用  # .net  # ai  # go  # node  # xpath 


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


相关推荐: Go语言中JSON数据解析与字段访问教程  初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解  Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置  Lar*el 递归关系中排除指定分支的教程  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  如何提高微信支付的安全性_微信支付安全防护与设置建议  DLsite中文平台入口 DLsite官网内容在线查看  Mac终端命令大全_Mac常用Terminal指令速查  漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航  sublime怎么格式化代码_sublime代码美化与一键排版插件配置  小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】  Excel文件在线转换快速入口 Excel在线格式转换网站  Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】  顺丰快递查询系统 官方正版查询入口  2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC  神庙逃亡小游戏在线玩 神庙逃亡小游戏入口  Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值  漫蛙漫画官方首页 漫蛙2漫画在线阅读入口  抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩  大象笔记网页版入口 印象笔记网页版登录入口  Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程  sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程  ACG动漫视频网入口 ACG动漫*免费正版观看地址  Python实时数据流中的动态最值查找策略  将JSON对象数组转置为键值对列表的实用指南  免费抖音短视频入口_抖音网页版短视频免费通道  qq游戏网页版直接玩_qq游戏免下载快速入口  Sublime Text怎么设置垂直标尺_Sublime配置Rulers规范代码长度  J*aScript 字符串标签转换:使用正则表达式高效替换  2026年发布! 美少女养成动作RPG《神剑少女战记》发布实机演示  微信网页版登录教程_微信网页版登录入口在哪  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验  天猫2025双十一0点秒杀攻略 天猫爆款抢购时间  Bing引擎入口最新2025 Bing搜索免费官方登录  深入理解J*a编译器的兼容性选项:从-source到--release  菜鸟取件码是什么怎么查 最全查询渠道汇总  Mac怎么查看崩溃日志_Mac控制台错误报告分析  J*aScript中localStorage数据的获取、清洗与格式化教程  优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法  58动漫网在线官方网 58动漫网正版动漫入口网址  163邮箱官方主页登录 直达网易邮箱登录核心页面  c++如何实现单例设计模式_c++线程安全的单例模式写法  Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】  服务端验证_j*ascript输入检查  J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程 

搜索