LINQ to XML可在C#中高效查询和操作XML,支持从文件或字符串加载数据,使用XDocument.Load或Parse方法;通过Elements、Element和Attribute方法结合LINQ语法可实现标题提取、条件筛选及属性读取;支持命名空间处理,使XML操作简洁直观。

在C#中,使用LINQ to XML可以非常方便地查询和操作XML数据。它结合了LINQ的强大查询能力与轻量级的XML处理机制,语法简洁、易读性强。
加载XML数据
你可以从字符串、文件或流中加载XML数据。常用的是XDocument.Load(从文件)或XDocument.Parse(从字符串)。
示例XML:
加载方式:
var doc = XDocument.Load("books.xml");// 或从字符串解析
var doc = XDocument.Parse(xmlString);
基本查询:获取所有书籍标题
使用Elements()和Element()方法结合LINQ查询。
var titles = from book in doc.Root.Elements("Book")select book.Element("Title").Value;
foreach (var title in titles)
Console.WriteLine(title);
带条件的查询:查找价格大于70的书籍
在查询中加入where子句进行筛选。
小型企业入门套件(The Small Business Starter Kit)提供了一个商业宣传网站的完整演示,他适合中小型企业。使用他创建的网站支持自定义模板,具有先进的功能,包括:内容和数据管理的SQL和XML数据源整合。该源码包含C#和VB两个版本,只有前台部分源码,微软官方截止到51aspx发布源码时还没有提供后台代码。小型企业网站入门套件的关键页面包括:产品分类显示新闻发布显示商户认证
where decimal.Parse(book.Element("Price").Value) > 70
select new
{
Title = book.Element("Title").Value,
Author = book.Element("Author").Value,
Price = decimal.Parse(book.Element("Price").Value)
};
foreach (var book in expensiveBooks)
Console.WriteLine($"{book.Title} - {book.Author} : {book.Price}");
查询属性:获取Book的ID
使用Attribute()方法读取节点属性。
var booksWithId = from book in doc.Root.Elements("Book")select new
{
ID = book.Attribute("ID")?.Value,
Title = book.Element("Title").Value
};
注意:使用 ?. 可避免Attribute为null时报错。
处理命名空间(如有)
如果XML包含命名空间,需先定义XNamespace。
XNamespace ns = "http://example.com/books";var books = from book in doc.Root.Elements(ns + "Book")
select book.Element(ns + "Title").Value;
基本上就这些。LINQ to XML让XML查询变得像写SQL一样自然,适合中小规模数据的读取和转换。









