C# 操作XML
2015-07-31 10:55 Evan.Pei 阅读(130) 评论(0) 编辑 收藏 举报XML存储数据的一种文本格式,以节点的方式存储,类似html,只是节点名称可以自己定义。
1.创建XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | public void fun_createXML() { XmlNode xmlnode; XmlElement xmlelem; XmlDocument xmldoc = new XmlDocument(); //创建根节点 XmlDeclaration xmldecl = xmldoc.CreateXmlDeclaration( "1.0" , "gb2312" , null ); xmldoc.AppendChild(xmldecl); //创建员工节点容器 xmlelem = xmldoc.CreateElement( "" , "Employees" , "" ); xmldoc.AppendChild(xmlelem); //放三个员工到容器里面 for ( int i = 0; i < 3; i++) { //xmldoc.SelectSingleNode()查找某个节点 xmlnode = xmldoc.SelectSingleNode( "Employees" ); //创建节点 XmlElement xe = xmldoc.CreateElement( "node" ); xe.SetAttribute( "name" , "evan" ); //设置属性 xe.SetAttribute( "age" , "27" ); //创建节点 XmlElement kemu1 = xmldoc.CreateElement( "title" ); kemu1.SetAttribute( "id" , "title" ); //设置属性 kemu1.InnerText = "javascript" ; //设置文本 xe.AppendChild(kemu1); //填充到xe节点中 XmlElement score = xmldoc.CreateElement( "score" ); score.InnerText = "86.5" ; xe.AppendChild(score); xmlnode.AppendChild(xe); } //在项目根目录创建XML文件 xmldoc.Save(Server.MapPath( "data3.xml" )); } |
2.读取XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public void fun_GetXML() { //System.IO.StreamReader myfile = // new System.IO.StreamReader(Server.MapPath("data3.xml"),System.Text.Encoding.Default); //string mystring = myfile.ReadToEnd();//以文本的方式获取全部文本 //myfile.Close(); XmlDocument xd = new XmlDocument(); xd.Load(Server.MapPath( "data3.xml" )); //获取所有子节点 XmlNodeList xnlist = xd.SelectSingleNode( "Employees" ).ChildNodes; for ( int i = 0; i < xnlist.Count; i++) { XmlElement xe = (XmlElement)xnlist[i]; Response.Write( "名字是:" +xe.GetAttribute( "name" )+ "</br>" ); //获取属性名称 //获取子节点 XmlNodeList xn2=xe.ChildNodes; for ( int y = 0; y < xn2.Count; y++) { XmlElement xe2 = (XmlElement)xn2[y]; if (xe2.Name == "title" ) //节点名称 { Response.Write( "科目是:" + xe2.InnerText + "</br>" ); } else { Response.Write( "分数数:" + xe2.InnerText + "</br>" ); } } } } |
3.修改XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public void fun_updateXMLText() { XmlDocument xd = new XmlDocument(); xd.Load(Server.MapPath( "data3.xml" )); //获取所有子节点 XmlNodeList nodelist = xd.SelectSingleNode( "Employees" ).ChildNodes; //循环子节点 foreach (XmlNode x in nodelist) { //转换 XmlElement xe = (XmlElement)x; if (xe.Name == "NEWnode" ) { //判断节点名称 xe.InnerText = "bbbbbbbbbb" ; //修改里面的文本 } } xd.Save(Server.MapPath( "data3.xml" )); //重新保存 } |
4.添加XML
1 2 3 4 5 6 7 8 9 10 11 12 | public void fun_addNodeXML() { XmlDocument xd = new XmlDocument(); xd.Load(Server.MapPath( "data3.xml" )); XmlNode xn = xd.SelectSingleNode( "Employees" ); XmlElement xe = xd.CreateElement( "NEWnode" ); xe.InnerText = "NEWnodeTEXT" ; xn.AppendChild(xe); xd.Save(Server.MapPath( "data3.xml" )); } |
5.删除XML节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | XmlDocument xmlDoc= new XmlDocument(); xmlDoc.Load( Server.MapPath( "data.xml" ) ); XmlNodeList xnl=xmlDoc.SelectSingleNode( "Employees" ).ChildNodes; foreach (XmlNode xn in xnl) { XmlElement xe=(XmlElement)xn; xe.RemoveAttribute( "genre" ); //删除genre属性 XmlNodeList nls=xe.ChildNodes; //继续获取xe子节点的所有子节点 foreach (XmlNode xn1 in nls) //遍历 { XmlElement xe2=(XmlElement)xn1; //转换类型 if (xe2.Name== "flag" ) //如果找到 { xe.RemoveChild(xe2); //则删除 } } } xmlDoc.Save( Server.MapPath( "data.xml" ) ); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构