LINQ to XML让C#中处理XML变得简洁高效,只需一行代码即可完成解析、筛选、构建和命名空间处理,结合XDocument与LINQ查询语法,实现流畅、安全、易维护的XML操作。

处理XML在C#中曾是个繁琐任务,尤其用传统的XmlDocument或XmlReader时,代码冗长还容易出错。但自从LINQ to XML出现后,一切变得简洁高效。你真的只需要一行代码就能完成大多数XML解析需求。
LINQ to XML 的核心是 XDocument 和 XLinq 查询语法。比如有如下XML:
<Books>
<Book ID="1">
<Title>C# in Depth</Title>
<Author>Jon Skeet</Author>
</Book>
<Book ID="2">
<Title>CLR via C#</Title>
<Author>Jeffrey Richter</Author>
</Book>
</Books>
你想提取所有书名,传统方式要循环节点,而现在只需一行:
var titles = XDocument.Load("books.xml").Descendants("Book").Select(b => b.Element("Title")?.Value);这行代码加载XML、查找所有Book节点,并提取Title文本,简洁又安全(使用了null条件操作符)。
想获取ID为2的作者?继续链式调用即可:
string author = XDocument.Load("books.xml") .Descendants("Book") .Where(b => (string)b.Attribute("ID") == "2") .Select(b => b.Element("Author")?.Value) .FirstOrDefault();这里甚至不需要显式转换,LINQ to XML 支持将XAttribute隐式转成string、int等,写起来像原生类型一样自然。
LINQ to XML 不只是读,写同样优雅。创建上面的XML结构可以这样:
var doc = new XDocument( new XElement("Books", from b in bookList select new XElement("Book", new XAttribute("ID", b.ID), new XElement("Title", b.Title), new XElement("Author", b.Author) ) ) );结合LINQ查询表达式,对象转XML清晰直观,还能直接保存:doc.Save("output.xml");
带命名空间的XML常让人头疼,但只要定义XNamespace变量,照样简洁:
通过字符串拼接XName,命名空间不再干扰你的查询逻辑。
基本上就这些。LINQ to XML 把XML操作变成了类似数据库查询的体验,语法流畅,错误少,维护性强。与其写一堆遍历代码,不如掌握这几招,一行解决90%的场景。
以上就是一行代码解决C# XML解析问题? 那些你不知道的LINQ to XML技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号