XElement 是 System.Xml.Linq 命名空间中最核心的类,用于轻量、直观地创建、加载、查询、修改 XML;支持构造函数/字面量语法生成XML,可从多种源加载并保存,借助 LINQ 简洁查询,且支持属性操作、内容更新与节点增删。

System.Xml.Linq 命名空间是 C# 中用于轻量、直观操作 XML 的核心类库,它基于 LINQ 技术,让创建、查询、修改 XML 文档像操作普通对象一样自然。其中 XElement 是最常用、最核心的类——你可以把它看作“XML 元素的活体代表”,既是 XML 节点,又能当容器、能查数据、能增删改。
用 XElement 快速创建 XML
不用写一堆 XmlDocument、XmlElement、XmlWriter,直接用构造函数或字面量语法就能生成结构清晰的 XML:
- 空元素:
new XElement("book")→ - 带文本内容:
new XElement("title", "C# 编程入门")→C# 编程入门 - 嵌套结构(支持链式):
new XElement("library",
new XElement("book",
new XElement("title", "LINQ 实战"),
new XElement("author", "张三")))
→ 生成完整层级的 XML 树
用 XElement 加载和保存 XML
支持从字符串、文件、流、URL 等多种来源加载,也支持一键保存:
- 从字符串加载:
var doc = XElement.Parse(" ");- A
- 从文件加载:
var doc = XElement.Load("data.xml"); - 保存到文件:
doc.Save("output.xml"); - 转成字符串:
string xml = doc.ToString();(可选SaveOptions.DisableFormatting去缩进)
用 XElement 查询和定位节点
借助 LINQ 表达式,查找比 XPath 更易读,比 DOM 更简洁:
- 找所有子元素:
doc.Elements("book") - 找后代中任意层级的 title:
doc.Descendants("title") - 带条件筛选(比如作者是“李四”):
doc.Elements("book").Where(b => b.Element("author")?.Value == "李四") - 取第一个匹配项:
doc.Element("book")?.Element("isbn")?.Value(安全导航,避免 NullReferenceException)
用 XElement 修改和构建动态 XML
XElement 是可变的:能添加子元素、设置属性、替换内容、删除节点,整个过程无需脱离 XML 树结构:
- 添加属性:
new XElement("book", new XAttribute("id", "1001")) - 添加子元素:
book.Add(new XElement("price", "59.9")) - 设置/更新文本:
book.Element("title").Value = "新版 C# 编程" - 移除节点:
book.Element("publisher")?.Remove(); - 插入新元素到开头:
book.AddFirst(new XElement("category", "编程"));
不复杂但容易忽略:XElement 天然支持隐式转换(比如 string、int、bool 可直接传入构造函数),也支持集合(如 List










