C#怎么动态创建和修改XML节点

8次阅读

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

C#怎么动态创建和修改XML节点

在C#中动态创建和修改XML节点,推荐使用 System.Xml.Linq 命名空间下的 XDocumentXElement 类——它们语法简洁、支持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 等繁琐步骤。

text=ZqhQzanResources