C#的System.Xml.Linq命名空间有什么用 XElement入门

24次阅读

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

C#的System.Xml.Linq命名空间有什么用 XElement入门

System.Xml.Linq 命名空间是 C# 中用于轻量、直观操作 XML 的核心类库,它基于 LINQ 技术,让创建、查询、修改 XML 文档像操作普通对象一样自然。其中 XElement 是最常用、最核心的类——你可以把它看作“XML 元素的活体代表”,既是 XML 节点,又能当容器、能查数据、能增删改。

用 XElement 快速创建 XML

不用写一 XmlDocument、XmlElement、XmlWriter,直接用构造函数或字面量语法就能生成结构清晰的 XML:

  • 空元素:new XElement("book")<book></book>
  • 带文本内容:new XElement("title", "C# 编程入门")<title>C# 编程入门</title>
  • 嵌套结构(支持链式):
    new XElement("library",<br>  new XElement("book",<br>    new XElement("title", "LINQ 实战"),<br>    new XElement("author", "张三")))

    → 生成完整层级的 XML 树

用 XElement 加载和保存 XML

支持从字符串、文件、流、URL 等多种来源加载,也支持一键保存:

  • 从字符串加载:var doc = XElement.Parse("<root><item>A</item></root>");
  • 从文件加载:var doc = XElement.Load("data.xml");
  • 保存到文件:doc.Save("output.xml");
  • 转成字符串:String xml = doc.ToString();(可选 SaveOptions.DisableFormatting 去缩进)

用 XElement 查询和定位节点

借助 LINQ 表达式,查找比 XPath 更易读,比 dom 更简洁:

C#的System.Xml.Linq命名空间有什么用 XElement入门

AutoGLM沉思

智谱AI推出的具备深度研究和自主执行能力的AI智能体

C#的System.Xml.Linq命名空间有什么用 XElement入门 239

查看详情 C#的System.Xml.Linq命名空间有什么用 XElement入门

  • 找所有子元素: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、intbool 可直接传入构造函数),也支持集合(如 List)直接作为子内容——这让拼装 XML 变得非常流畅。只要记住它代表“一个元素及其全部子树”,就抓住了核心。

text=ZqhQzanResources