C# XML文档相关操作

C# 创建XML文档

  • XML文档知识点
  • 创建XML文档
  • 向XML中追加
  • 读取XML文档
  • 读取带属性的XML文档
  • 删除节点

XML文档知识点

XML 是可扩展的标记语言
XML:用来存储数据
注意点:XML是严格区分大小写的,XML标签也是成对出现的
XML文档有且只能有一个根节点
当需要往节点里里面添加标签的时候使用InnerXml,添加文本的时候使用InnerText
元素包含节点

创建XML文档

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;namespace demo20_0801
{internal class Program{static void Main(string[] args){//通过代码来创建XML文档//1.引用命名空间//2.创建XML文档对象XmlDocument doc = new XmlDocument();//3.创建第一行描述信息,并且添加到doc文档中XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);doc.AppendChild(dec);//4.创建根节点XmlElement books = doc.CreateElement("Books");//将根节点添加到文档中doc.AppendChild(books);//5.给根节点Books创建子节点XmlElement book1 = doc.CreateElement("Book");//将book添加到根节点books.AppendChild(book1);//给book1添加子节点XmlElement name1 = doc.CreateElement("Name");name1.InnerText = "被讨厌的勇气";book1.AppendChild(name1);//给book1添加子节点XmlElement price1 = doc.CreateElement("Price");price1.InnerText = "10";book1.AppendChild(price1);//给book1添加子节点XmlElement disc1 = doc.CreateElement("Disc");disc1.InnerText = "富有哲理且有深度";book1.AppendChild(disc1);//给节点添加属性XmlElement Charactor1 = doc.CreateElement("Charactor");Charactor1.SetAttribute("人物1","大师");Charactor1.SetAttribute("人物2", "学者");book1.AppendChild(Charactor1);//下面两个节点测试了InnerXml和XmlElement test1 = doc.CreateElement("test1");test1.InnerText = "<p>我是一个标签</p>";book1.AppendChild(test1);XmlElement test2 = doc.CreateElement("test2");test2.InnerXml = "<p>我是一个标签</p>";book1.AppendChild(test2);doc.Save("Books.xml");//保存xml文档Console.WriteLine("保存成功");Console.ReadKey();}}
}

创建好的XML文档如下所示:
在这里插入图片描述

向XML中追加

追加XML文档,首先要判断XML文档存不存在,存在则加载XML文档并获取根节点,若文件不存在,则创建第一行和根节点。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.IO;namespace demo21_0801
{internal class Program{//追加XML文档static void Main(string[] args){XmlDocument doc = new XmlDocument();XmlElement books;if (File.Exists("Books.xml")){//如果文件存在,加载XMLdoc.Load("Books.xml");//获得文件的根节点books = doc.DocumentElement;}else{//如果文件不存在,创建第一行XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "utf-8", null);doc.AppendChild(xmlDeclaration);//创建根节点books = doc.CreateElement("Books");doc.AppendChild(books);}//5.给根节点Books创建子节点XmlElement book1 = doc.CreateElement("Book");//将book添加到根节点books.AppendChild(book1);//给book1添加子节点XmlElement name1 = doc.CreateElement("Name");name1.InnerText = "C#图解教程";book1.AppendChild(name1);XmlElement price1 = doc.CreateElement("Price");price1.InnerText = "10";book1.AppendChild(price1);XmlElement disc1 = doc.CreateElement("Disc");disc1.InnerText = "富有哲理且有深度";book1.AppendChild(disc1);doc.Save("Books.xml");Console.WriteLine("保存成功");Console.ReadKey();}}
}

读取XML文档

在这里插入图片描述
读取上述XML文档

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.IO;namespace demo22_0801
{internal class Program{static void Main(string[] args){//读取XML文档XmlDocument doc = new XmlDocument();doc.Load("Books.xml");//获取文档的根节点XmlElement books = doc.DocumentElement;//获得子节点,返回节点的集合XmlNodeList xmlNodeList = books.ChildNodes;foreach (XmlNode xmlNode in xmlNodeList){Console.WriteLine(xmlNode.InnerText);}Console.ReadKey();}}
}

打印出来的内容如下所示:
在这里插入图片描述

读取带属性的XML文档

如果读取带有属性的XML文档,文档内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Books><Book><Charactor name1="大师" name2="学者" /></Book>
</Books>

读取带有属性的XML文档的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.IO;namespace demo23_0801
{internal class Program{//读取节点的属性值static void Main(string[] args){XmlDocument doc = new XmlDocument();doc.Load("Books.xml");//选择节点:XmlNodeList xmlNodeList = doc.SelectNodes("/Books/Book/Charactor");foreach (XmlNode node in xmlNodeList){Console.WriteLine(node.Attributes["name1"].Value);Console.WriteLine(node.Attributes["name2"].Value);}Console.ReadKey();}}
}

控制台显示内容如下:
在这里插入图片描述

删除节点

要删除的XML文档内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Books><Book><Name>C#图解教程</Name><Price>10</Price><Disc>富有哲理且有深度</Disc></Book>
</Books>

删除节点代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;namespace demo24_0801
{internal class Program{static void Main(string[] args){XmlDocument doc = new XmlDocument();doc.Load("Books.xml");XmlNode xmlNode  = doc.SelectSingleNode("/Books/Book");//删除Book下面的所有子节点xmlNode.RemoveAll();doc.Save("Books.xml");Console.WriteLine("删除成功");Console.ReadKey();}}
}

删除后的XML文档内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Books><Book></Book>
</Books>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/18834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根据URL批量下载文件并压缩成zip文件

根据url批量下载图片或者视频&#xff0c;只需要将图片的url和名称放到数组对象即可&#xff0c;例如&#xff1a; let fileArr [{fvUrl:https://image.xuboren.com/image/2023/07/26/1410829074764cdbaa4314a084eb749e.jpg,fvName: 图片名称},{fvUrl:https://image.xuboren.…

Hive数据仓库

数据仓库概念与起源发展由来 数仓概念 数据仓库&#xff08;英语&#xff1a;Data Warehouse&#xff0c;简称数仓、DW&#xff09;&#xff0c;是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面相分析的集成化数据环境&#xff0c;分析结果为企业提供决策支持…

git-版本控制器

集中式版本控制工具&#xff08;不常用&#xff09; 版本库集中于中央服务器&#xff0c;team要联网才能工作&#xff08;下载代码&#xff09; SVN CVS 分布式版本控制工具 每个电脑上都有一个完整的版本库&#xff0c;工作时无需联网&#xff0c;可以把修改推送给其他人来…

java(Collection类)

文章目录 Collection接口继承树Collection接口及方法判断删除其它 Iterator(迭代器)接口迭代器的执行原理 foreach循环Collection子接口1&#xff1a;ListList接口特点List接口方法List接口主要实现类&#xff1a;ArrayListList的实现类之二&#xff1a;LinkedListList的实现类…

Pytorch个人学习记录总结 10

目录 优化器 优化器 官方文档地址&#xff1a;torch.optimhttps://pytorch.org/docs/stable/optim.html Debug过程中查看的grad所在的位置&#xff1a; model --> Protected Atributes --> _modules --> ‘model’ --> Protected Atributes --> _modules -…

unity 使用Vuforia扫描物体( ModelTarget 模型目标)

1、下载vuforia插件vufora 2、下载模型生成器Model Target Generator 3、将vuforia插件导入到unity &#xff0c;我使用的unity是2021版本&#xff0c;导出插件时&#xff0c;只显示有两个文件&#xff0c;导入后&#xff0c;会有一个弹框 让更新插件&#xff0c;点击updata&am…

浅谈微服务异步解决方案

导言 异步是一种设计思想&#xff0c;不是设计目的&#xff0c;因此不要为了异步而异步&#xff0c;要有所为&#xff0c;有所不为。 异步不是『银弹』&#xff0c; 避免试图套用一个『异步框架』解决所有问题&#xff0c; 需要根据不同的业务特点或要求&#xff0c;选择合适的…

【数据结构】_5.栈

目录 1. 概念 2. 栈的使用 2.1 方法 2.2 示例 3. 栈的模拟实现 4. 栈的应用场景 4.1 题目1&#xff1a;不可能的出栈序列 4.2 题目2&#xff1a;逆序打印单链表 4.3 题目3&#xff1a;逆波兰表达式求值 4.4 题目4&#xff1a;括号匹配 4.5 题目5&#xff1a;栈的压入…

mysql月统计数据,没有的填充为0

要按时间戳字段按月份分组查询记录表&#xff0c;可以使用DATE_FORMAT函数将时间戳字段格式化为年月格式&#xff0c;然后将结果按照该字段进行分组。 SELECT a.month month,ifnull(b.count, 0) count FROM (SELECT 1 month UNION ALL SELECT 2 month UNION ALL SELECT 3 mont…

Day04-作业(MavenSpringBootWeb入门)

作业1&#xff1a;创建maven工程并配置相关依赖&#xff0c;完成如下需求 需求&#xff1a; 创建三个maven工程&#xff0c;projectA/projectB/projectC&#xff0c;在同一个idea窗口打开 三个maven工程设置依赖&#xff0c;关系入下图所示 作业2&#xff1a;基于SpringBoot…

走进人工智能|自动驾驶 开启智能出行新时代

前言 自动驾驶&#xff0c;也被称为无人驾驶或自动驾驶汽车&#xff0c;是指能够在没有人类干预的情况下自主地感知环境、决策和控制车辆行驶的技术和系统。 文章目录 前言主题发展趋势自动驾驶等级L0级自动驾驶L1级别自动驾驶L2级别自动驾驶L3级别自动驾驶L4级别自动驾驶L5级…

MySQL 在CentOS下安装

yum安装 1、yum源安装 yum install mariadb-server2、启动MySQL服务 systemctl start mariadb3、查看运行状态 systemctl status mariadb4、设置初始密码 mysql -u rootuse mysql;update user set passwordpassword("root")where userroot;flush privileges;e…

【LeetCode】5. 最长回文串

题目链接 文章目录 1. 思路讲解2. 代码实现 1. 思路讲解 与求回文子串思路差别不大 在做这道题目之前&#xff0c;可以先做一下另一道回文子串的题目&#xff0c;如果会了那道求回文子串的题目&#xff0c;这道题基本上也就会了。 回文子串的题解在这里 它也就是求出每一个回…

音乐节《迷笛音乐节》游玩感

上周&#xff0c;去了烟台&#xff0c;参加音乐节&#xff0c;以前从未参加过&#xff0c;所以趁着本周六周日双休的时候&#xff0c;去游玩了一次。&#xff08;1&#xff09;一种新奇体验 对于自己来说&#xff0c;参加音乐节还是一种新奇的体验的&#xff0c;也是疫情放开了…

苍穹外卖day09——历史订单模块(用户端)+订单管理模块(管理端)

查询历史订单——需求分析与设计 产品原型 业务规则 分页查询历史订单 可以根据订单状态查询 展示订单数据时&#xff0c;需要展示的数据包括&#xff1a;下单时间、订单状态、订单金额、订单明细&#xff08;商品名称、图片&#xff09; 接口设计 查询历史订单——代码开…

ChatGPT在法律行业的市场潜力

​ChatGPT现在已经成为我们的文字生成辅助工具、搜索引擎助手&#xff0c;许多体验过它的朋友会发现对它越来越依赖&#xff0c;并将其逐渐融入到自己的日常工作、生活。但有一点值得注意&#xff1a;这种人工智能除了技术可行、经济价值可行还要与相关规范即人类普遍的价值观念…

所有集群启动的命令

所有集群启动的命令 查询所有节点启动Hadoop集群(Yarn模式)关闭Hadoop集群Spark&#xff08;local模式&#xff09;启动Spark集群standalone模式(不用了)关闭standalone模式HA下的standalone模式关闭HA-standalone模式Yarn模式&#xff08;重点&#xff09; 关闭Spark集群启动f…

python_day16_设计模式

“”“单例模式”“” “”“工厂模式”“” class Person:passclass Worker(Person):passclass Student(Person):passclass Teacher(Person):passclass Factory:def get_person(self, p_type):if p_type w:return Worker()elif p_type s:return Student()else:return Te…

【雕爷学编程】MicroPython动手做(25)——语音合成与语音识别2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

偶数科技与白鲸开源完成兼容性认证

近日&#xff0c;偶数科技自主研发的云原生分布式数据库 OushuDB v5.0 完成了与白鲸开源集成调度工具 WhaleStudio v2.0 的兼容性相互认证测试。 测试结果显示&#xff0c;双方产品相互良好兼容&#xff0c;稳定运行、安全&#xff0c;同时可以满足性能需求&#xff0c;为企业级…