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.rhkb.cn/news/73954.html

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

相关文章

【Java】Springboot脚手架生成初始化项目代码

Springboot配置生成初始化项目代码可以通过mvn的mvn archetype:generate 和阿里云原生应用脚手架&#xff08;地址&#xff09;、spring官方提供的start初始化生成页面(地址&#xff09;。 1、mvn archetype:generate 通过mvn选择对应的脚手架可以快速生成初始化代码&#xf…

C高级--day2(用户相关操作 磁盘相关操作 shell脚本 修改环境变量)

#include<myhead.h>void fun(int n) {if(n>9){fun(n/10);printf("%d\t",n%10);putchar(10);return;}else{printf("%d\n",n%10);return;} } int main(int argc, const char *argv[]) {int num;printf("请输入一个整数&#xff1a;");sca…

2023华数杯数学建模A题思路分析 - 隔热材料的结构优化控制研究

# 1 赛题 A 题 隔热材料的结构优化控制研究 新型隔热材料 A 具有优良的隔热特性&#xff0c;在航天、军工、石化、建筑、交通等 高科技领域中有着广泛的应用。 目前&#xff0c;由单根隔热材料 A 纤维编织成的织物&#xff0c;其热导率可以直接测出&#xff1b;但是 单根隔热…

CRM系统如何进行公海池线索分配自动化?

在销售过程中&#xff0c;线索分配是一个非常重要的环节。传统的线索分配方式往往是由销售主管手动进行&#xff0c;不仅效率低下&#xff0c;还存在着不公平、不灵活的问题。因此&#xff0c;许多企业通过CRM来实现公海池线索分配自动化。 1、基于规则的分配 CRM可以让用户设…

Java课题笔记~Maven基础

2、Maven 基础 2.1 Maven安装与配置 下载安装 配置&#xff1a;修改安装目录/conf/settings.xml 本地仓库&#xff1a;存放的是下载的jar包 中央仓库&#xff1a;要从哪个网站去下载jar包 - 阿里云的仓库 2.2 创建Maven项目

SequenceDiagram 查看代码时序图的利器,做技术方案必备!

前言 “ 无论是快速了解业务流程&#xff0c;还是快速的熟悉系统的业务代码逻辑&#xff0c;以及各个类和方法等的调用关系&#xff0c;时序图无疑是其中一种不可获取的简便快捷的方式。一起来了解下&#xff0c;IDEA如何快速生成时序图吧。” 工作中&#xff0c;经常需要绘制…

SpringBoot集成jasypt,加密yml配置文件

SpringBoot集成jasypt&#xff0c;加密yml配置文件 一、pom配置二、生成密文代码三、配置3.1、yml加密配置3.2、密文配置3.3、启动配置3.4、部署配置 四、遇到的一些坑 最新项目安全检测&#xff0c;发现配置文件中数据库密码&#xff0c;redis密码仍处理明文状态 一、pom配置…

Matlab对TMS320F28335编程-新建工程闪烁led灯

前言 工具&#xff1a;Matlab2022b Matlab对接C2000插件&#xff0c;下载连接如下 Embedded Coder Support Package for Texas Instruments C2000 Processors - File Exchange - MATLAB Central 在Matlab中加载此插件后&#xff0c;按照要求一步一步的进行就可以&#xff0c…

公司植物日常护养方法备忘录

植物为我们净化空气&#xff0c;美化环境&#xff0c;我们要按照科学的经验照顾好它们。公司植物日常通用护养方法如下&#xff1a; 首先剪掉已经枯黄的部分。 需要晒太阳的植物按时搬到外面晒太阳&#xff0c;每次晒1到2个小时。 所有植物统一在每个月的20号左右施肥一次&am…

51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 实验二 LED闪烁

目录 前言 一、原理图及知识点介绍 二、代码分析 知识点四&#xff1a;delay(u16 i)这个函数为什么i1时&#xff0c;大约延时10us&#xff1f; 前言 已经是第二个实验了&#xff0c;上一个实验是点亮第一个LED灯&#xff0c;这个实验是LED的闪烁。 一、原理图及知识点介绍…

stm32常见数据类型

stm32的数据类型的字节长度 s8 占用1个byte&#xff0c;数据范围 -2^7 到 (2^7-1) s16 占用2个byte&#xff0c;数据范围 -2^15 到 (2^15-1) s32 占用 4个byte&#xff0c;数据范围 -2^31 到 (231-1)231 2147483647 int64_t占用8个byte&#xff0c;数据范围 -2^63 到 (2^63-1)…

uniapp小程序console.log在微信开发者工具中不打印问题

最近在开发一款uniapp小程序&#xff0c;发现console.log在微信开发者工具中不打印&#xff0c;但在H5页面就能够有打印输出&#xff0c;于是在网上寻找原因… 主要是由于vue.config.js文件中有设置发布时删除console的配置&#xff0c;如下&#xff1a; 官网参考地址&#x…

无人驾驶实战-第一课(自动驾驶概述)

在七月算法上报了《无人驾驶实战》课程&#xff0c;老师讲的真好。好记性不如烂笔头&#xff0c;记录一下学习内容。 课程入口&#xff0c;感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 无人驾驶汽车的定义…

ES-5-进阶

单机 & 集群 单台 Elasticsearch 服务器提供服务&#xff0c;往往都有最大的负载能力&#xff0c;超过这个阈值&#xff0c;服务器 性能就会大大降低甚至不可用&#xff0c;所以生产环境中&#xff0c;一般都是运行在指定服务器集群中 配置服务器集群时&#xff0c;集…

【Linux】网络基础

&#x1f34e;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Linux系统网络编程 文章目录 一、协议初识和网络协议分层&#xff08;TCP/IP四层模型&#xff09;认识协议TCP/IP五层&#xff08;或四层&#xff09;模型 二、认识MAC地址和IP地址认识MAC地址认识IP地址认…

AI绘画| 迪士尼风格|可爱头像【附Midjourney提示词】

Midjourney案例分享 图片预览 迪士尼风格&#xff5c;可爱头像 高清原图及关键词Prompt已经放在文末网盘&#xff0c;需要的自取 在数字艺术的新时代&#xff0c;人工智能绘画已经迅速崭露头角。作为最先进的技术之一&#xff0c;AI绘画结合了艺术和科学&#xff0c;开启了一…

GitHub上怎么寻找项目?

前言 下面由我精心整理的关于github项目资源搜索的一些方法&#xff0c;这些方法可以帮助你更快更精确的搜寻到你需要的符合你要求的项目。 写文章不易&#xff0c;如果这一篇问文章对你有帮助&#xff0c;求点赞求收藏~ 好&#xff0c;下面我们直接进入正题——> 首先我…

【无网络】win10更新后无法联网,有线无线都无法连接,且打开网络与Internet闪退

win10更新后无法联网&#xff0c;有线无线都无法连接&#xff0c;且打开网络与Internet闪退 法1 重新配置网络法2 更新驱动法3 修改注册表编辑器法4 重装系统 自从昨晚点了更新与重启后&#xff0c;今天电脑就再也不听话了&#xff0c;变着花样地连不上网。 检查路由器&#xf…

初识C++:类与对象

前言&#xff08;类的引入&#xff09; C语言结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。比如&#xff1a; 之前在C语言中&#xff0c;用C语言方式实现的栈&#xff0c;结构体中只能定义变量&#xff1b;现在以C方…

Android Unit Test

一、测试基础知识 1.1 测试级别 测试金字塔&#xff08;如图 2 所示&#xff09;说明了应用应如何包含三类测试&#xff08;即小型、中型和大型测试&#xff09;&#xff1a; 小型测试是指单元测试&#xff0c;用于验证应用的行为&#xff0c;一次验证一个类。 中型测试是指…