XmlDocument 是 C# 中基于 DOM 模型操作 XML 的核心类,支持创建、修改、保存和查询;需手动添加声明与根节点,通过 CreateElement/AppendChild 构建结构,用 SetAttribute 添加属性,Save/Load 实现持久化,XPath 提供精准节点定位。

XmlDocument 是 C# 中用于创建、读取、修改和保存 XML 文档的核心类,属于 System.Xml 命名空间。它基于 DOM(文档对象模型),把整个 XML 加载到内存中,适合对 XML 进行随机访问和频繁修改的场景。
创建空的 XmlDocument 并添加根节点
新建一个 XmlDocument 实例后,需手动创建声明和根元素才能构成合法 XML:
- 调用
CreateXmlDeclaration("1.0", "utf-8", null)创建 XML 声明 - 用
CreateElement("根标签名")创建根节点 - 用
AppendChild()依次追加声明和根节点
示例代码:
XmlDocument doc = new XmlDocument();
XmlDeclaration decl = doc.CreateXmlDeclaration("1.0", "utf-8", null);
XmlElement root = doc.CreateElement("Books");
doc.AppendChild(decl);
doc.AppendChild(root);
向 XML 中添加子节点和属性
在已有节点上可继续添加子元素、文本内容或属性:
- 用
CreateElement()创建新元素,再用AppendChild()添加进父节点 - 用
CreateTextNode("内容")创建文本节点并附加到元素下(实现“元素内容”) - 用
CreateAttribute("name")创建属性,设置Value后通过SetAttributeNode()或直接用SetAttribute("name", "value")
例如为 Book 添加带 ID 属性和 Title 子节点:
XmlElement book = doc.CreateElement("Book");
book.SetAttribute("ID", "1");
XmlElement title = doc.CreateElement("Title");
title.AppendChild(doc.CreateTextNode("C# 编程入门"));
book.AppendChild(title);
root.AppendChild(book);
保存和加载 XML 文档
生成好结构后,用 Save() 方法写入文件或流;加载已有 XML 则用 Load() 或 LoadXml():
-
doc.Save("books.xml")—— 直接保存到文件(自动编码为 UTF-8) -
doc.Load("books.xml")—— 从文件加载完整 XML -
doc.LoadXml("—— 从字符串加载 ")Hello
查找和修改已有节点
常用查询方式有 GetElementsByTagName() 和 SelectNodes()/SelectSingleNode()(支持 XPath):
-
XmlNodeList books = doc.GetElementsByTagName("Book");—— 获取所有 Book 元素 -
XmlNode firstTitle = doc.SelectSingleNode("//Book/Title");—— 用 XPath 查找第一个 Title - 修改节点内容:
firstTitle.InnerText = "新标题"; - 删除节点:
firstTitle.ParentNode.RemoveChild(firstTitle);
注意:使用 XPath 需确保已引入 System.Xml.XPath,且文档结构清晰时推荐 XPath 提高定位精度。不复杂但容易忽略编码与节点层级关系。










