当前位置: 首页 > news >正文

创建XML的三种方式(二)

文章目录

      • 1 使用XmlDocument创建XML文档
      • 2 使用XmlTextWriter写XML文档
      • 3 使用LINQ to XML 的XDocument类
      • 4 小结

本文介绍了在winform中使用C#开发语言来创建XML文档的三种方式,并介绍了各自的优缺点。
方法1是使用 XmlDocument创建XML文档,方法2是使用 XmlTextWriter编写XML文档,方法3是使用 LINQ to XML的Document类生成XML文档。

1 使用XmlDocument创建XML文档

使用XmlDocument.CreateXmlDeclaration来声明头部信息,用XmlDocument.CreateElement创建元素,
把创建的头部信息,还有元素添加到文档中,最后保存。元素之间有同级关系,也有父子关系,可以通过设定的Parent来决定两者之间的联系。

CreateXmlDeclaration(string version, string encoding, string standalone)

version: 版本必须写 1.0
encoding: 设置保存到文件的编码方式,默认是UTF-8
stangalone: 该值必须是“yes”或“no”.如果是null或String.empty,保存的时候不在XML声明上写这个特性。

          //创建一个空的XMLXmlDocument document = new XmlDocument();//声明头部XmlDeclaration dec = document.CreateXmlDeclaration("1.0", "utf-8", "yes");document.AppendChild(dec);//创建根节点XmlElement root =  document.CreateElement("Citys");document.AppendChild(root);//创建父元素XmlElement childEle1 = document.CreateElement("Province");//属性childEle1.SetAttribute("level", "发达");//中间文本childEle1.InnerText = "广东";//添加到根节点root.AppendChild(childEle1);//创建子元素XmlElement subchildEle1 = document.CreateElement("City");//属性subchildEle1.SetAttribute("level", "省会");//中间文本subchildEle1.InnerText = "广州";//添加到父结点childEle1.AppendChild(subchildEle1);//创建子元素XmlElement subchildEle2 = document.CreateElement("City");subchildEle2.SetAttribute("level", "一线");//中间文本subchildEle2.InnerText = "深圳";//添加到父结点childEle1.AppendChild(subchildEle2);//创建父元素XmlElement childEle2 = document.CreateElement("Province");//属性childEle2.SetAttribute("level", "发展");//中间文本childEle2.InnerText = "广西";//添加到根节点root.AppendChild(childEle2);//创建子元素XmlElement subchildEle3 = document.CreateElement("City");subchildEle3.SetAttribute("level", "三线");//中间文本subchildEle3.InnerText = "桂林";//添加到父结点childEle2.AppendChild(subchildEle3);//保存文档document.Save(@"D:\temp.xml");

运行结果

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Citys><Province level="发达">广东<City level="省会">广州</City><City level="一线">深圳</City></Province><Province level="发展">广西<City level="三线">桂林</City></Province>
</Citys>

扩展添加注释和字符数字段

            //评论注释XmlComment comment = document.CreateComment("这是一份关于城市省份的文件");root.AppendChild(comment);//字符数字段XmlCDataSection CData;CData = document.CreateCDataSection("All Jane Austen novels 25% off starting 3/23!");childEle2.AppendChild(CData);

运行结果

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Citys><!--这是一份关于城市省份的文件--><Province level="发达">广东<City level="省会">广州</City><City level="一线">深圳</City>
</Province><Province level="发展">广西<![CDATA[All Jane Austen novels 25% off starting 3/23!]]><City level="三线">桂林</City></Province>
</Citys>

2 使用XmlTextWriter写XML文档

XmlTextWriter 类中有一些函数是成对出现的,比如WriteStartDocumentWriteEndDocument; 元素WriteStartElementWriteEndElement,用来标注一个元素的开始和结束,有很强的对应性。

 //创建XmlTextWriter对象XmlTextWriter textWriter = new XmlTextWriter(@"D:\writer.xml", Encoding.UTF8);//xml文档开始textWriter.WriteStartDocument();//写根节点textWriter.WriteStartElement("Citys");//注释textWriter.WriteComment("这是使用XmlTextWriter写的");textWriter.WriteStartElement("Province");textWriter.WriteAttributeString(null, "level", null, "发展");textWriter.WriteString("广西");//添加子项textWriter.WriteStartElement("city");textWriter.WriteAttributeString(null, "level", null, "省会");textWriter.WriteString("南宁");textWriter.WriteEndElement();textWriter.WriteStartElement("city");textWriter.WriteAttributeString(null, "level", null, "旅游");textWriter.WriteString("桂林");textWriter.WriteEndElement();//结束Province广西textWriter.WriteEndElement();textWriter.WriteElementString("Province","广东");//结束整个文档textWriter.WriteEndDocument();textWriter.Close();

运行结果

<?xml version="1.0" encoding="utf-8"?>
<Citys>
<!--这是使用XmlTextWriter写的-->
<Province level="发展">广西<city level="省会">南宁</city><city level="旅游">桂林</city>
</Province>
<Province>广东</Province>
</Citys>

3 使用LINQ to XML 的XDocument类

使用到的命名空间

using System.Xml;
using System.Xml.Linq;

使用LinqTo Xml就很方便,XML文档层级结构多的话,写代码时要注意缩进方便阅读,示例代码:

          XDocument document = new XDocument(new XElement("Citys", new XComment("这是使用Ling写的XML"),new XElement("Province", new XText("广西"), new XElement("city", new XText("南宁"),new  XAttribute("level", "省会")),new XElement("city", new XText("桂林"), new XAttribute("level", "旅游"))),new XElement("Province", new XText("广东"),new XElement("city", new XText("广州"), new XAttribute("level", "省会")),new XElement("city", new XText("深圳"), new XAttribute("level", "一线")))) );document.Save(@"D:\Ling.xml");

运行结果:

<?xml version="1.0" encoding="utf-8"?>
<Citys><!--这是使用Ling写的XML--><Province>广西<city level="省会">南宁</city><city level="旅游">桂林</city></Province><Province>广东<city level="省会">广州</city><city level="一线">深圳</city></Province>
</Citys>

4 小结

1 使用XmlDocument创建XML文档,创建的节点指定父节点,就构成层级关系,最后将最上层的节点添加到Document中保存即可。

2 使用XmlTextWriter编写XML文档时,该类有很强元素开始和结束的对应关系(l例如WriteStartElementWriteEndElement),通过这种嵌套关系来建立元素之间的层级。

3 使用LINQ to XML构建XML文档时,很便利快捷,有种所见即所得的既视感,虽然也是通过嵌套建立的层级关系,但又不像XmlTextWriter的严格接口要求。如果层级比较多,需要规范的代码缩进。

相关文章:

创建XML的三种方式(二)

文章目录 1 使用XmlDocument创建XML文档2 使用XmlTextWriter写XML文档3 使用LINQ to XML 的XDocument类4 小结 本文介绍了在winform中使用C#开发语言来创建XML文档的三种方式&#xff0c;并介绍了各自的优缺点。 方法1是使用 XmlDocument创建XML文档&#xff0c;方法2是使用 …...

十分钟教你搭建类似ChatGPT的安卓应用程序

大家好&#xff0c;我是易安&#xff01; Chat GPT 是当今著名的人工智能工具&#xff0c;就像聊天机器人一样。Chat GPT会回答发送给它的所有查询。今天&#xff0c;我将通过集成 OpenAI API (ChatGPT)构建一个简单的类似 ChatGPT 的 android 应用程序&#xff0c;我们可以在其…...

问题 E: 起止位置(C++)(二分查找)

目录 1.题目描述 2.AC 1.题目描述 问题 E: 起止位置 时间限制: 1.000 Sec 内存限制: 128 MB提交 状态 题目描述 有n位同学按照年龄从小到大排好队。 王老师想要查询&#xff0c;年龄为x的同学&#xff0c;在队伍中首次出现的位置和最后一次出现的位置&#xff1b;如果队…...

【sop】基于灵敏度分析的有源配电网智能软开关优化配置[升级1](Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

LeetCode周赛复盘(第345场周赛)

文章目录 1、找出转圈游戏输家1.1 题目链接1.2 题目描述1.3 解题代码1.4 解题思路 2、相邻值的按位异或2.1 题目链接2.2 题目描述2.3 解题代码2.4 解题思路 3、 矩阵中移动的最大次数3.1 题目链接3.2 题目描述3.3 解题代码3.4 解题思路 4、 统计完全连通分量的数量4.1 题目链接…...

Call for Papers丨第三届GLB@KDD‘23 Workshop

鉴于介绍新数据集和Benchmark研究往往需要不同于常规论文的评审标准&#xff0c;计算机视觉和自然语言处理领域&#xff0c;以及最近的NeurIPS会议&#xff0c;都有专门致力于建立新Benchmark数据集和任务的Conference Track。然而在图机器学习领域&#xff0c;我们还没有类似的…...

【多线程】单例模式

目录 饿汉模式 懒汉模式-单线程版 懒汉模式-多线程版 懒汉模式-多线程版(改进) 单例是一种设计模式。 啥是设计模式 ? 设计模式好比象棋中的 " 棋谱 ". 红方当头炮 , 黑方马来跳 . 针对红方的一些走法 , 黑方应招的时候有一些固定的套路. 按照套路来走局势…...

7搜索管理

7搜索管理 7.1 准备环境 7.1.1 创建映射 创建xc_course索引库。 创建如下映射 post&#xff1a;http://localhost:9200/xc_course/doc/_mapping 参考 “资料”–》搜索测试-初始化数据.txt { "properties": { "description": { "type": &…...

在Pytorch中使用Tensorboard

Tensorboard是一款深度学习可视化软件&#xff0c;目前主要使用了它的可视化模型, 可视化模型权重和可视化损失函数功能。 x.1 tensorboard初始化 tensorboard初始化需要导入SummaryWriter包并指定存储位置和开放端口号。 from torch.utils.tensorboard import SummaryWrite…...

[笔记]深入解析Windows操作系统《四》管理机制

文章目录 前言4.1注册表查看和修改注册表注册表用法注册表数据类型注册表逻辑结构HKEY_CURRENT_USERHKEY_USERS 实验&#xff1a;观察轮廓加载和卸载HKEY_CLASSES_ROOTHKEY_LOCAL_MACHINE 实验:离线方式或远程编辑BCDHKEY_CURRENT_CONFIGHKEY_PERFORMANCE_DATA 前言 本章讲述了…...

【小沐学Python】Python实现在线英语翻译功能

文章目录 1、简介2、在线翻译接口2.1 Google Translate API2.2 Microsoft Translator API2.2.1 开发简介2.2.2 开发费用2.2.3 开发API 2.3 百度翻译开放平台 API2.3.1 开发简介2.3.2 开发费用2.3.3 开发API 2.4 Tencent AI 开放平台的翻译 API2.4.1 开发简介2.4.2 开发API 2.5 …...

k8s中pod使用详解

一、前言 在之前k8s组件一篇中,我们谈到了pod这个组件,了解到pod是k8s中资源管理的最小单位,可以说Pod是整个k8s对外提供服务的最基础的个体,有必要对Pod做深入的学习和探究。 二、再看k8s架构图 为了加深对k8s中pod的理解,再来回顾下k8s的完整架构 三、pod特点 结合上面这…...

案例说明:vue中Element UI下拉列表el-option中的key、value、label含义各是什么

可以简单理解为&#xff1a;label 是给用户展示的东西&#xff0c;value是前端往后端传递的真实值 <template><div><el-page-header back"goBack" content"注册"></el-page-header><el-divider></el-divider><el-…...

idea创建javaweb项目步骤超详细(2022最新版本)

目录 前言必读 一、新建文件 1.在idea里面点击文件-新建-项目 2.新建项目-更改名称为自己想要的项目名称-创建 3.右键自己建立的项目-添加框架支持&#xff08;英文版是Add Framework Support...&#xff09; 4.勾选Web应用程序-确定 5.建立成功界面 二、配置tomcat 6.…...

「SAP ABAP」OPEN SQL(六)【DELETE语句 | MODIFY语句】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较…...

SpringCloud --- Feign远程调用

一、RestTemplate问题 先来看我们以前利用RestTemplate发起远程调用的代码&#xff1a; 存在下面的问题&#xff1a; 代码可读性差&#xff0c;编程体验不统一参数复杂URL难以维护 Feign是一个声明式的http客户端&#xff0c;官方地址&#xff1a;GitHub - OpenFeign/feign:…...

基于单片机的数字频率计设计

数字频率计概述 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号&#xff0c;方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试…...

我看看哪个靓仔还没把Github Copilot用起来?

本人经常分享有价值的生产力工具、技术、好物与书籍&#xff0c;可关注同名公众&#x1f42d;并设为&#x1f31f;星标&#xff0c;第一时间获得更新 Github Copilot 是一个AI编程助手&#xff0c;其使用 OpenAI CodeX 在你的编辑器中实时建议代码或给你实现整个功能。 视频版介…...

C++系列一: C++简介

C入门简介 1. C语言的特点2. C编译器3. 第一个 C 程序4. 总结&#xff08;手稿版&#xff09; C 是一种高级编程语言&#xff0c;是C语言的扩展和改进版本&#xff0c;由Bjarne Stroustrup于1983年在贝尔实验室为了支持C语言中的面向对象编程而创建。C 既能够进行底层的系统编程…...

信通初试第一:无科研无竞赛一战上岸上海交大819学硕感悟

笔者来自通信考研小马哥23上交819全程班学员 信通初试第一&#xff1a;无科研无竞赛一战上岸上海交大819学硕感悟 原创2023-04-27 11:04通信考研小马哥 笔者来自通信考研小马哥23上交819全程班学员 本人情况&#xff1a; 本人是19届交本&#xff0c;本科成绩很差&#xff0c;…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...