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

月夜之吻
发布: 2025-11-04 21:52:02
原创
170人浏览过
使用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无法正确匹配。

示例:

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44
查看详情 怪兽AI数字人
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数据教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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