C# XDocument怎么用 XDocument类操作XML方法

月夜之吻
发布: 2025-12-18 09:16:02
原创
162人浏览过
XDocument 是 .NET 中基于 LINQ to XML 的轻量级 XML 处理类,支持函数式构建、LINQ 查询与流式读写;通过 Parse/Load 创建,用 Descendants/Elements 查询,增删改操作作用于 Root(XElement),最后 Save 或 ToString 输出。

c# xdocument怎么用 xdocument类操作xml方法

XDocument 是 .NET 中处理 XML 的核心类之一,属于 LINQ to XML,比传统的 XmlDocument 更简洁、更符合现代 C# 编程习惯。它支持函数式构建、LINQ 查询、流式读写,适合大多数 XML 操作场景。

创建和加载 XML

可以直接从字符串、文件或流创建 XDocument

  • 字符串解析var doc = XDocument.Parse("<root><item>abc</item></root>");
  • 从文件加载:var doc = XDocument.Load("config.xml");
  • 新建空文档:var doc = new XDocument(new XElement("root"));

查询 XML 节点(LINQ 风格)

Descendants()Elements()Where() 等方法查找节点,返回 IEnumerable<xelement></xelement>

  • 查所有 book 元素:doc.Descendants("book")
  • 查直接子元素:root.Elements("author")
  • 带条件筛选:doc.Descendants("price").Where(x => (decimal)x >= 20)
  • 取第一个匹配项:doc.Root?.Element("title")?.Value

增删改节点(直接操作 XElement)

XDocument 本身不存数据,实际操作的是其根节点 Root(类型为 XElement):

Otter.ai
Otter.ai

一个自动的会议记录和笔记工具,会议内容生成和实时转录

Otter.ai 141
查看详情 Otter.ai
  • 添加子元素:root.Add(new XElement("category", "fiction"));
  • 插入前/后:elem.AddBeforeSelf(...)AddAfterSelf(...)
  • 修改值:elem.Value = "new text";elem.SetAttributeValue("id", "101")
  • 删除节点:elem.Remove();(注意:调用后该元素脱离树结构)

保存和输出

修改完成后可保存回文件或转成字符串:

  • 保存到文件:doc.Save("output.xml");
  • 转字符串:doc.ToString()(带缩进)或 doc.ToString(SaveOptions.DisableFormatting)
  • 只取内部 XML(不含声明):doc.Root.ToString()

基本上就这些。XDocument 的关键在于把 XML 当作对象树来操作,配合 LINQ 查询非常直观。注意别混淆 XDocument(整篇文档,含声明)和 XElement(单个元素),多数增删改都在 XElement 上做。

以上就是C# XDocument怎么用 XDocument类操作XML方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号