C#怎么操作XML文件 C# XmlDocument读写XML方法

C#操作XML最常用方式是XmlDocument类,基于DOM加载整个XML到内存,支持增删改查、遍历和保存,适合几MB以内中小型文件。

C# 操作 XML 文件最常用、最直接的方式就是用 XmlDocument,它基于 DOM(文档对象模型),把整个 XML 加载到内存中,支持增删改查、遍历和保存,适合中小型 XML 文件(几 MB 以内)。下面讲清楚怎么读、怎么写、怎么改,不绕弯子。

加载和读取 XML 内容

Load()LoadXml() 把 XML 载入内存,再用 SelectNodes() / SelectSingleNode() 配合 XPath 查找节点。

  • 从文件加载:doc.Load("config.xml");
  • 从字符串加载:doc.LoadXml("A");
  • 查所有 item 元素:var nodes = doc.SelectNodes("//item");
  • 取第一个 item 的 id 属性:string id = node.Attributes["id"]?.Value;
  • 取文本内容:string text = node.InnerText.Trim();

创建和添加新节点

CreateElement()CreateAttribute() 等方法生成节点,再用 AppendChild()InsertBefore() 插入到目标位置。

  • 新建元素:XmlElement newItem = doc.CreateElement("item");
  • 加属性:newItem.SetAttribute("id", "3");
  • 加文本子节点:newItem.InnerText = "New Value";
  • 插入到 root 下:doc.DocumentElement?.AppendChild(newItem);

修改和删除已有节点

找到目标节点后,直接改 InnerTextAttributes,或调用 RemoveChild() / RemoveAll()

  • 改文本:node.InnerText = "Updated";
  • 改属性:node.Attributes["id"].Value = "99";
  • 删某个子节点:parentNode.RemoveChild(targetNode);
  • 清空所有子节点:node.RemoveAll();

保存回文件或字符串

改完别忘了保存。用 Save() 写入文件,用 OuterXml 获取字符串形式(含根节点),InnerXml 只取内部内容。

  • 保存到文件:doc.Save("config.xml");
  • 获取完整 XML 字符串:string xmlStr = doc.OuterXml;
  • 格式化输出(带缩进):先设置 doc.PreserveWhitespace = false;,再用 XmlTextWriter 或 .NET 6+ 的 XmlWriter.Create(..., new XmlWriterSettings { Indent = true })

基本上就这些。注意:操作前建议加异常处理(比如文件不存在、XML 格式错误),多层嵌套时 XPath 写准一点,避免空引用。小项目够用,大文件建议换 XmlReader/XmlWriter 流式处理。