LINQ to XML 提供简洁高效的 XML 处理方式,支持创建、查询、修改和保存 XML 文档。通过 XElement 和 XDocument 可构建或加载 XML,结合 LINQ 语法实现节点查询与投影,支持属性筛选、命名空间处理,并可添加、更新、删除节点后保存到文件,适用于配置管理与数据交换场景。

LINQ to XML 是 C# 中处理 XML 数据的强大工具,它结合了 LINQ 的查询能力与 XML 文档操作的灵活性。相比传统的 XML 处理方式(如 XmlDocument),LINQ to XML 更加简洁、易读,并支持函数式编程风格。下面介绍如何使用 C# 进行常见的 XML 查询与操作。
你可以从字符串、文件或直接构建的方式创建 XML 文档。
示例:创建一个简单的 XML 文档
XElement books = new XElement("Books",
new XElement("Book",
new XAttribute("Id", "1"),
new XElement("Title", "C# 入门详解"),
new XElement("Author", "张三"),
new XElement("Price", "59.80")
),
new XElement("Book",
new XAttribute("Id", "2"),
new XElement("Title", "LINQ 实战"),
new XElement("Author", "李四"),
new XElement("Price", "68.00")
)
);
从文件加载 XML
XDocument doc = XDocument.Load("books.xml");
从字符串解析 XML
string xmlStr = @"<Books><Book Id='1'><Title>C# 高级编程</Title></Book></Books>"; XElement root = XElement.Parse(xmlStr);
你可以使用标准 LINQ 查询语法筛选和投影 XML 节点。
查询所有书籍标题
var titles = from book in books.Elements("Book")
select book.Element("Title").Value;
<p>foreach (var title in titles)
{
Console.WriteLine(title);
}</p>查找价格大于 60 的书籍
var expensiveBooks = from book in books.Elements("Book")
let price = double.Parse(book.Element("Price").Value)
where price > 60
select new
{
Title = book.Element("Title").Value,
Price = price
};
<p>foreach (var b in expensiveBooks)
{
Console.WriteLine($"{b.Title}: {b.Price}");
}</p>通过属性查询特定书籍
var bookById = books.Elements("Book")
.Where(b => b.Attribute("Id")?.Value == "1")
.FirstOrDefault();
<p>if (bookById != null)
{
Console.WriteLine("找到书籍: " + bookById.Element("Title").Value);
}</p>你可以添加、更新或删除节点,并将结果保存到文件。
添加新书籍
books.Add(new XElement("Book",
new XAttribute("Id", "3"),
new XElement("Title", "ASP.NET 核心开发"),
new XElement("Author", "王五"),
new XElement("Price", "75.00")
));
更新某本书的价格
var bookToUpdate = books.Elements("Book")
.FirstOrDefault(b => b.Element("Title")?.Value == "C# 入门详解");
if (bookToUpdate != null)
{
bookToUpdate.Element("Price").Value = "55.00";
}
删除某本书
var bookToDelete = books.Elements("Book")
.FirstOrDefault(b => (string)b.Attribute("Id") == "2");
bookToDelete?.Remove();
保存到文件
doc.Save("updated_books.xml"); // 如果是 XDocument
// 或者
books.Save("new_books.xml"); // 如果是 XElement 且需要根节点
当 XML 包含命名空间时,查询需显式指定。
XNamespace ns = "http://example.com/books";
var booksWithNs = from book in root.Elements(ns + "Book")
select book.Element(ns + "Title").Value;
基本上就这些常用操作。LINQ to XML 让 XML 处理变得直观高效,适合配置文件、数据交换等场景。熟练掌握后能大幅提升开发效率。
以上就是C#怎么使用LINQ to XML_C# LINQ to XML查询与操作教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号