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

来源:AI智能体作者:三上悠亚头衔:网络博主
导读:本期聚焦于小伙伴创作的《C#的System.Xml.Linq命名空间有什么用 XElement入门》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#的System.Xml.Linq命名空间有什么用 XElement入门》有用,将其分享出去将是对创作者最好的鼓励。

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

C#的System.Xml.Linq命名空间有什么用 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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。