欢迎光临南昌笑劳网络科技有限公司,我们是一家专注中小型企业营销推广服务的公司!

咨询热线:400 76543 55
南昌笑劳网络科技有限公司
最新资讯News
南昌笑劳网络科技有限公司

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

作者:月夜之吻 | 点击: | 来源:月夜之吻
0411
2025
使用XmlDocument和XPath可高效筛选XML数据,如SelectNodes("//Book")提取所有书籍节点,结合XmlNamespaceManager处理命名空间,或通过XDocument配合XPath扩展方法查询带条件的元素。...
使用XmlDocument和XPath可高效筛选XML数据,如SelectNodes("//Book")提取所有书籍节点,结合XmlNamespaceManager处理命名空间,或通过XDocument配合XPath扩展方法查询带条件的元素。

在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(@"
            
                
                    C#入门经典
                    张三
                    89.00
                
                
                    深入理解C#
                    李四
                    75.50
                
            ");

        // 使用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无法正确匹配。

示例:

XmlDocument doc = new XmlDocument();
doc.LoadXml(@"
    
        
            ASP.NET教程
        
    ");

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(@"
    
        
            C#高级编程
        
    ");

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

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


# c#  # 就能  # 第一个  # 你可以  # 是一种  # 是在  # 文档  # 加载  # 是一个  # 所需  # 类型转换  # xml  # 命名空间  # 数据类型  # .net  # ai  # go  # node  # 推荐使用 

我要咨询做网站
成功案例
建站流程
  • 网站需
    求分析
  • 网站策
    划方案
  • 页面风
    格设计
  • 程序设
    计研发
  • 资料录
    入优化
  • 确认交
    付使用
  • 后续跟
    踪服务
  • 400 76543 55
    sale#ncxiaolao.cn
Hi,Are you ready?
准备好开始了吗?
那就与我们取得联系吧

咨询送礼现在提交,将获得笑劳科技策划专家免费为您制作
价值5880元《全网营销方案+优化视频教程》一份!
下单送礼感恩七周年,新老用户下单即送创业型空间+域名等大礼
24小时免费咨询热线400 76543 55
合作意向表
您需要的服务
您最关注的地方
预算

直接咨询