XDocument 和 XmlDocument 分属不同技术体系:XDocument 是 LINQ to XML 的现代声明式 API,轻量高效,适合新项目;XmlDocument 是传统 DOM 实现,命令式操作,兼容性强但较冗繁。
XDocument 和 XmlDocument 都是 C# 中用于处理 XML 的类,但它们属于不同技术体系,设计理念、API 风格、性能特征和适用场景差异明显。
XDocument 是 LINQ to XML 的核心类,属于 .NET Fram
ework 3.5 引入的现代 XML API,强调函数式、声明式编程风格,与 LINQ 深度集成;XmlDocument 是传统的 DOM(Document Object Model)实现,源自 .NET Framework 1.0,遵循 W3C DOM 标准,以节点树方式建模,操作偏命令式。
XDocument 提供更简洁直观的语法:
XmlDocument 则需显式创建节点、追加子节点、管理命名空间前缀等:
XDocument 默认采用轻量级、不可变(逻辑上)的节点模型,内部使用更紧凑的数据结构,创建和遍历小到中型 XML 通常更快,内存占用略低;XmlDocument 是标准 DOM 实现,每个节点都是完整对象,支持事件(如 NodeChanged)、深度克隆、保留原始格式细节(如空白文本节点),适合需要精细控制解析行为或兼容老系统(如 WebService 返回的 XmlDocument)的场景。
两者可互相转换:
新项目优先选 XDocument;维护旧代码或对接要求 XmlDocument 的组件(如某些 ASP.NET WebForm 控件、WCF 配置)时仍需使用 XmlDocument。