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

在C#中使用XPath筛选XML数据是一种高效且灵活的方法,尤其适用于需要从结构化XML文档中提取特定节点或属性的场景。通过System.Xml命名空间中的类,如XDocument、XmlDocument和XmlNode,你可以结合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提供强大的路径匹配能力,以下是在C#中常用的表达式:
如果XML包含命名空间,必须在查询时注册XmlNamespaceManager,否则XPath无法正确匹配。
示例:
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更现代,但需要引入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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号