推荐使用XDocument和XElement类动态创建修改XML:用构造器拼装节点、LINQ查找目标、实例方法增删改,支持属性设置、内容替换、兄弟插入及Remove()删除,最后Save()保存。

在C#中动态创建和修改XML节点,推荐使用 System.Xml.Linq 命名空间下的 XDocument 和 XElement 类——它们语法简洁、支持LINQ查询、内存操作直观,比传统的 XmlDocument 更现代易用。
动态创建XML节点
用 XElement 构造器可直接拼装层级结构,支持嵌套、属性、文本内容一次性声明:
- 创建根节点并添加子节点:var root = new XElement("Books", new XElement("Book", new XAttribute("id", "1"), new XElement("Title", "C#入门"), new XElement("Author", "张三")));
- 批量添加同级节点:用集合初始化器或 Add() 方法,如 root.Add(new XElement("Book", new XAttribute("id", "2"), ...));
- 创建空文档再加根:var doc = new XDocument(new XElement("Root")); 后续用 doc.Root.Add(...) 追加
定位并修改现有节点
修改前先用 LINQ 方法查到目标节点(如 Elements()、Descendants()、FirstOrDefault()),再调用实例方法:
- 改文本内容:node.Value = "新书名"; 或 node.ReplaceNodes("新内容");
- 改属性值:node.SetAttributeValue("id", "99");(属性不存在会自动创建)
- 替换整个节点:node.ReplaceWith(new XElement("Book", ...));
- 插入兄弟节点:node.AddAfterSelf(...) 或 node.AddBeforeSelf(...)
删除与保存
删除节点直接调用 Remove() 方法(注意:该节点必须已附加到父节点,否则无效果):
- 删单个:node.Remove();
- 删所有匹配项:doc.Descendants("Temp").Remove();
- 保存到文件:doc.Save("books.xml"); 或用 doc.ToString() 获取字符串
基本上就这些。关键点是:用 XElement 做构建,用 LINQ 做查找,用实例方法做增删改——不用手动管理 XmlNode 的父子关系,也不用担心 CreateElement 等繁琐步骤。










