XML文档的增删改查

本文介绍了XML作为一种轻便的配置文件格式,如何通过标签组织数据,支持跨平台交换,以及如何使用C#编程创建和解析XML文档,包括元素、属性和文本内容的处理。还展示了如何读取和修改XML文档中的数据以及常用操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为vs自带的XML格式文件,方便,轻便,记事本浏览器都能打开,作为配置文件,保存数据使用非常方便

//XML文档:可标记扩展语言------用来做数据的存储,还可以添加对数据的描述
            //存储文本内容,可以用记事本打开
            //任何平台都兼容 可以做数据交换的载体
            //文档内,节点,元素,属性,文本内容
            //文本内容才是存储的数据
            // XML 格式
            // 标签要闭合-------开始标签和结束标签配对
            //有且只一个根节点。每一个子节点下也可以有多个子节点
            //节点名称区分大小写,属性的值必须加"",
            //文档的注释:<!---->
            //注意编码格式的统一,默认是UTF-8
            //<![CDATA[]]>------- 存储的数据包含特殊字符

            //XML命名规范

            //可以包含字母数字,其他字符,
            //不能以数字开头,不能以逗号开头,不能是XML 不能是空格
            //元素和节点
            //元素和节点的区别,元素肯定是节点,节点不一定是元素

下面我们创建一个XML文档

<?xml version="1.0" encoding="utf-8" ?>
<student>
	<Student>
		<!--区分大小写的-->
	</Student>
	<st1>
		<name>
			张三
		</name>

		<score dec="语文成绩">
			90
		</score>
	</st1>	
	
	<st2>
		<name>李四</name> <!--这是name子节点-->
		<score dec="数学成绩">100</score>
	</st2>
	<st3>
		<name> <![CDATA[<王五>]]> </name> <!--<>尖括号是特殊符号系统会默认为节点 如果想要用这个尖括号必须这么写-->
	</st3>
	<st4/> <!--自闭标签-->
	
</student>

 //节点:<st1>元素节点
            //<name>元素节点
            // dec 属性节点
            //张三,文本节点
            //注释内容也是节点
            //元素:
            //<st1> 
            //<name Id="1001">张三<name/>
            //<st1/>
            //从元素中获取属性和文本内容

 //通过编程方式创建XML文档 using system.XML
            //  XmlDocument doc = new XmlDocument();//创建文档对象
            //XmlDeclaration dec= doc.CreateXmlDeclaration("1.0","utf-8",null);//创建文档开头描述 declaration 声明的意思
            //  doc.AppendChild(dec); //将描述信息添加到文档内

            //  //添加根元素
            // XmlElement Skills= doc.CreateElement("Skills");//创建根元素
            // doc.AppendChild(Skills);//将根元素添加到文档中


            //  //skill1
            //  XmlElement skill1 = doc.CreateElement("skill1");
            //  Skills.AppendChild (skill1);// skill1添加到Skills元素下
            //  XmlElement id1 = doc.CreateElement("id1"); //创建skill1下的子元素id1
            //  skill1.AppendChild(id1); //将子元素添加到skill1下,
            //  id1.InnerText = "Q";//设置文本内容
            //  XmlElement name1 = doc.CreateElement("name1");//创建skill1下子元素name1
            //  skill1.AppendChild (name1);//将子元素添加到skill1下
            //  name1.InnerText = "眩晕";
            //  name1.SetAttribute("dec", "眩晕对方2s");//设置属性名称和属性的值

            //  //skill2

            //  XmlElement skill2 = doc.CreateElement("skill2");
            //  Skills.AppendChild(skill2);
            //  XmlElement id2 = doc.CreateElement("id2");
            //  skill2.AppendChild(id2);
            //  id2.InnerText = "Q";
            //  XmlElement name2 = doc.CreateElement("name2");
            //  skill2.AppendChild (name2);
            //  name2.InnerText = "加速";
            //  name2.SetAttribute("dec", "加速30%");//设置属性名称和属性的值

            //  //skill3
            //  XmlElement skill3 = doc.CreateElement("skill3");
            //  Skills.AppendChild(skill3);
            //     XmlElement id3=  doc.CreateElement("id3");
            //  skill3.AppendChild(id3);
            //  id3.InnerText = "Y";
            //  XmlElement name3 = doc.CreateElement("name2");
            //  skill3.AppendChild(name3);
            //  name3.InnerText = "暴走";
            //  name3.SetAttribute("dec", "暴走30s");

            //最后保存下xml文档
            //  doc.Save("student.xml");

            //---------------------------------------------------
            //文档的读取

            XmlDocument doc = new XmlDocument();//创建文档对象
           doc.Load("student.xml");
            //XmlElement skills = doc.DocumentElement; //获取文档的根元素
            //XmlNodeList list1 = skills.ChildNodes;
            //输出的是根元素下所有子元素的文本内容
            //foreach (XmlNode item in list1)
            //{
            //    Console.WriteLine(item.InnerText);//输出Q眩晕,Q加速,Y暴走
            //}
            //Console.WriteLine();
            // XmlNodeList list2= list1[0].ChildNodes;
            //foreach (XmlNode item in list2)
            //{
            //    Console.WriteLine(item.InnerText);
            //}


            //通过文档节点路径的方式读取节点
            //    skills / skill1 / id1 /………………

             //获取元素集合 
             XmlNodeList list = doc.SelectNodes("skills/skill1");
            foreach (XmlNode item in list)
            {
                Console.WriteLine(item.InnerText);
            }
            //获取单一的元素
            XmlNode xn1 = doc.SelectSingleNode("Skills/skill1/name1");//用路径的方式读取元素

            Console.WriteLine(xn1.InnerText);//输出的是当前元素的文本内容
                                             //文档内的属性
                                             // 属性的名称对应属性的值
            string msg = xn1.Attributes["dec"].Value;//移除后再去读取就会报错
            Console.WriteLine(msg);
            xn1.Attributes["dec"].Value = "眩晕5s";//修改了文档
            xn1.RemoveAll();//删除元素下所有内容
            doc.Save("student.xml");


       


            Console.ReadKey();  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值