System.Xml.Linq是C#中专门用于LINQ to XML操作的命名空间,它提供了一套轻量、灵活的API,让开发者可以通过LINQ语法便捷地完成XML文档的创建、查询、修改、删除等操作,相比传统的XmlDocument方式,代码更简洁,可读性更强。XElement是该命名空间中最核心的类,代表XML文档中的一个元素,几乎所有XML操作都可以通过XElement完成。

System.Xml.Linq命名空间的核心作用
System.Xml.Linq命名空间的设计目标是简化XML处理流程,它的核心优势体现在以下几个方面:
- 支持LINQ查询:可以直接用LINQ语句筛选、排序XML中的元素,不需要手动遍历节点
- 轻量高效:不需要加载完整的XML文档对象模型,内存占用更低
- 语法简洁:创建和修改XML的代码更接近XML本身的结构,可读性强
- 兼容性好:可以和其他.NET类库无缝配合,处理XML数据更灵活
XElement入门基础用法
1. 创建XML文档
使用XElement可以很方便地构建XML结构,不需要拼接字符串,直接通过嵌套XElement对象就能生成完整的XML文档。
using System;
using System.Xml.Linq;
class Program
{
static void Main()
{
// 创建根元素和子元素
XElement bookStore = new XElement("BookStore",
new XElement("Book",
new XElement("Title", "C#入门经典"),
new XElement("Author", "张三"),
new XElement("Price", 59.9)
),
new XElement("Book",
new XElement("Title", "LINQ实战"),
new XElement("Author", "李四"),
new XElement("Price", 69.9)
)
);
// 输出XML内容
Console.WriteLine(bookStore.ToString());
}
}
2. 读取XML元素内容
可以通过XElement的Element方法获取子元素,Value属性获取元素的文本内容,也可以通过Attribute方法获取元素的属性值。
using System;
using System.Xml.Linq;
class Program
{
static void Main()
{
string xmlContent = @"<BookStore>
<Book>
<Title>C#入门经典</Title>
<Author>张三</Author>
<Price>59.9</Price>
</Book>
</BookStore>";
XElement root = XElement.Parse(xmlContent);
// 获取第一个Book元素的Title内容
XElement firstBookTitle = root.Element("Book").Element("Title");
Console.WriteLine("第一本书书名:" + firstBookTitle.Value);
// 获取所有Book元素的书名
foreach (XElement book in root.Elements("Book"))
{
string title = book.Element("Title").Value;
string author = book.Element("Author").Value;
Console.WriteLine($"书名:{title},作者:{author}");
}
}
}
3. 修改XML元素
XElement支持直接修改元素的文本内容和属性,修改后可以直接保存为新的XML文档或者字符串。
using System;
using System.Xml.Linq;
class Program
{
static void Main()
{
string xmlContent = @"<BookStore>
<Book>
<Title>C#入门经典</Title>
<Author>张三</Author>
<Price>59.9</Price>
</Book>
</BookStore>";
XElement root = XElement.Parse(xmlContent);
// 修改第一本书的价格
XElement firstBookPrice = root.Element("Book").Element("Price");
firstBookPrice.Value = "49.9";
// 给第一本书添加出版年份属性
root.Element("Book").SetAttributeValue("PublishYear", "2023");
Console.WriteLine(root.ToString());
}
}
4. 用LINQ查询XML元素
结合LINQ语法,可以快速筛选出符合要求的XML元素,比如查询价格低于60的书。
using System;
using System.Linq;
using System.Xml.Linq;
class Program
{
static void Main()
{
string xmlContent = @"<BookStore>
<Book>
<Title>C#入门经典</Title>
<Author>张三</Author>
<Price>59.9</Price>
</Book>
<Book>
<Title>LINQ实战</Title>
<Author>李四</Author>
<Price>69.9</Price>
</Book>
</BookStore>";
XElement root = XElement.Parse(xmlContent);
// 查询价格低于60的书籍
var cheapBooks = from book in root.Elements("Book")
where Convert.ToDouble(book.Element("Price").Value) < 60
select book.Element("Title").Value;
Console.WriteLine("价格低于60的书籍:");
foreach (var title in cheapBooks)
{
Console.WriteLine(title);
}
}
}
注意事项
使用XElement处理XML时,需要注意XML的命名空间问题,如果XML带有命名空间,需要用XNamespace配合处理。另外,XElement.Parse方法会解析XML字符串,如果字符串格式不正确会抛出异常,实际使用中建议添加异常处理逻辑。对于大型XML文件,不建议一次性加载到内存,可以结合XmlReader和XElement的方式分段处理,避免内存占用过高。
System.Xml.LinqXElementLINQ_to_XMLC#_XML操作修改时间:2026-07-17 07:21:28