C#怎么创建XML文档 XmlDocument使用方法

发布时间 - 2025-12-31 00:00:00    点击率:
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 提高定位精度。不复杂但容易忽略编码与节点层级关系。


# node  # 编码  # app  # c#  # NULL  # 命名空间  # xml  # 字符串  # 对象  # dom  # 加载  # 文档  # 已有  # 第一个  # 再用  # 点上  # 新建一个  # 则用  # code  # XPath 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  教你用AI润色文章,让你的文字表达更专业  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  bootstrap日历插件datetimepicker使用方法  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  高端网站建设与定制开发一站式解决方案 中企动力  Laravel如何记录自定义日志?(Log频道配置)  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  如何在云虚拟主机上快速搭建个人网站?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  使用C语言编写圣诞表白程序  在线教育网站制作平台,山西立德教育官网?  node.js报错:Cannot find module 'ejs'的解决办法  如何基于云服务器快速搭建个人网站?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何在建站主机中优化服务器配置?  Python文件操作最佳实践_稳定性说明【指导】  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  音响网站制作视频教程,隆霸音响官方网站?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Python函数文档自动校验_规范解析【教程】  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  lovemo网页版地址 lovemo官网手机登录  PHP 500报错的快速解决方法  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  IOS倒计时设置UIButton标题title的抖动问题  网站制作企业,网站的banner和导航栏是指什么?  如何在万网主机上快速搭建网站?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  如何安全更换建站之星模板并保留数据?  Laravel如何使用Vite进行前端资源打包?(配置示例)  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Laravel如何实现数据库事务?(DB Facade示例)  如何为不同团队 ID 动态生成多个非值班状态按钮  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  nodejs redis 发布订阅机制封装实现方法及实例代码  如何在阿里云虚拟服务器快速搭建网站?  千库网官网入口推荐 千库网设计创意平台入口  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  javascript如何操作浏览器历史记录_怎样实现无刷新导航