XmlDocument 是 .NET 中用于中小型 XML 文档的 DOM 操作类,支持加载(文件/字符串/流)、XPath 查询(SelectNodes/SelectSingleNode)、节点创建与插入(需同文档)、保存(Save/OuterXml)及命名空间处理等完整功能。
XmlDocument 是 .NET 中操作 XML 的经典类,适合处理中小型 XML 文档,支持加载、查询、修改、保存等完整 DOM 操作。它基于内存树结构,用起来直观,但要注意不是流式解析(不适用于超大文件)。
可以从字符串、文件或流中加载 XML:
doc.Load("config.xml");
doc.LoadXml("- test
");
doc.Load(stream);
加载失败会抛出 XmlException,建议加 try-catch 处理格式错误。
常用方法有 SelectNodes() 和 SelectSingleNode(),支持 XPath 表达式:
doc.SelectNodes("//name")
doc.SelectSingleNode("/users/user[1]/id")
node.Attributes["id"]?.Value
node.InnerText 或 node.FirstChild?.Value
注意:XPath 区分大小写,且默认不识别命名空间(如需处理带 ns 的 XML,得配 XmlNamespaceManager)。
所有节点都需通过 XmlDocument 实例创建,不能直接 new:
XmlElement el = doc.CreateElement("status");
XmlAttribute attr = doc.CreateAttribute("code"); attr.Value = "200"; el.SetAttributeNode(attr);
parent.AppendChild(el);
parent.InsertBefore(newNode, refNode);
别忘了:新节点必须属于同一个 XmlDocument,跨文档直接赋值会报错。
修改后调用 Save() 写入文件或流:
doc.Save("output.xml");
string xmlStr = doc.OuterXml;(只读,不含格式化)XmlTextWriter 或 .NET 6+ 的 XmlSerializer 配合 XmlWriterSettings,XmlDocument 本身不自动格式化。如果只是临时生成 XML 字符串用于日志或调试,OuterXml 最方便;要写文件就直接 Save()。
基本上就这些。XmlD
ocument 上手快,逻辑清晰,适合配置文件、简单数据交换等场景。不复杂但容易忽略命名空间和节点归属问题。