XML文档基本操作的示例分析
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关XML文档基本操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、简单介绍using System.Xml;//初始化一个x
千家信息网最后更新 2025年11月07日XML文档基本操作的示例分析
这篇文章将为大家详细讲解有关XML文档基本操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、简单介绍
using System.Xml;//初始化一个xml实例XmlDocument xml=new XmlDocument();//导入指定xml文件xml.Load(path);xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));//指定一个节点XmlNode root=xml.SelectSingleNode("/root");//获取节点下所有直接子节点XmlNodeList childlist=root.ChildNodes;//判断该节点下是否有子节点root.HasChildNodes;//获取同名同级节点集合XmlNodeList nodelist=xml.SelectNodes("/Root/News");//生成一个新节点XmlElement node=xml.CreateElement("News");//将节点加到指定节点下,作为其子节点root.AppendChild(node);//将节点加到指定节点下某个子节点前root.InsertBefore(node,root.ChildeNodes[i]);//为指定节点的新建属性并赋值node.SetAttribute("id","11111");//为指定节点添加子节点root.AppendChild(node);//获取指定节点的指定属性值string id=node.Attributes["id"].Value;//获取指定节点中的文本string content=node.InnerText;//保存XML文件string path=Server.MapPath("~/file/bookstore.xml");xml.Save(path);//or use :xml.Save(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));在C#.net中如何操作XML
需要添加的命名空间:
定义几个公共对象:XmlDocument xmldoc ;XmlNode xmlnode ;XmlElement xmlelem ;
1,创建到服务器同名目录下的xml文件:
方法一:
xmldoc = new XmlDocument ( ) ;//加入XML的声明段落,XmlDeclaration xmldecl;xmldecl = xmldoc.CreateXmlDeclaration("1.0","gb2312",null);xmldoc.AppendChild ( xmldecl);//加入一个根元素xmlelem = xmldoc.CreateElement ( "" , "Employees" , "" ) ;xmldoc.AppendChild ( xmlelem ) ;//加入另外一个元素for(int i=1;i<3;i++){XmlNode root=xmldoc.SelectSingleNode("Employees");//查找 XmlElement xe1=xmldoc.CreateElement("Node");//创建一个节点 xe1.SetAttribute("genre","李赞红");//设置该节点genre属性 xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性XmlElement xesub1=xmldoc.CreateElement("title"); xesub1.InnerText="CS从入门到精通";//设置文本节点 xe1.AppendChild(xesub1);//添加到节点中 XmlElement xesub2=xmldoc.CreateElement("author"); xesub2.InnerText="候捷"; xe1.AppendChild(xesub2); XmlElement xesub3=xmldoc.CreateElement("price"); xesub3.InnerText="58.3"; xe1.AppendChild(xesub3);root.AppendChild(xe1);//添加到节点中 }//保存创建好的XML文档xmldoc.Save ( Server.MapPath("data.xml") ) ;////////////////////////////////////////////////////////////////////////////////////// 结果:在同名目录下生成了名为data.xml的文件,内容如下,
CS从入门到精通 候捷 58.3 CS从入门到精通 候捷 58.3
方法二:
XmlTextWriter xmlWriter;string strFilename = Server.MapPath("data1.xml") ;xmlWriter = new XmlTextWriter(strFilename,Encoding.Default);//创建一个xml文档xmlWriter.Formatting = Formatting.Indented;xmlWriter.WriteStartDocument();xmlWriter.WriteStartElement("Employees");xmlWriter.WriteStartElement("Node");xmlWriter.WriteAttributeString("genre","李赞红");xmlWriter.WriteAttributeString("ISBN","2-3631-4");xmlWriter.WriteStartElement("title");xmlWriter.WriteString("CS从入门到精通");xmlWriter.WriteEndElement();xmlWriter.WriteStartElement("author");xmlWriter.WriteString("候捷");xmlWriter.WriteEndElement();xmlWriter.WriteStartElement("price");xmlWriter.WriteString("58.3");xmlWriter.WriteEndElement();xmlWriter.WriteEndElement();xmlWriter.Close();//////////////////////////////////////////////////////////////////////////////////////结果:
CS从入门到精通 候捷 58.3
2,添加一个结点:
XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(Server.MapPath("data.xml")); XmlNode root=xmlDoc.SelectSingleNode("Employees");//查找 XmlElement xe1=xmlDoc.CreateElement("Node");//创建一个节点 xe1.SetAttribute("genre","张三");//设置该节点genre属性 xe1.SetAttribute("ISBN","1-1111-1");//设置该节点ISBN属性XmlElement xesub1=xmlDoc.CreateElement("title"); xesub1.InnerText="C#入门帮助";//设置文本节点 xe1.AppendChild(xesub1);//添加到节点中 XmlElement xesub2=xmlDoc.CreateElement("author"); xesub2.InnerText="高手"; xe1.AppendChild(xesub2); XmlElement xesub3=xmlDoc.CreateElement("price"); xesub3.InnerText="158.3"; xe1.AppendChild(xesub3);root.AppendChild(xe1);//添加到节点中 xmlDoc.Save ( Server.MapPath("data.xml") );////////////////////////////////////////////////////////////////////////////////////// 结果:在xml原有的内容里添加了一个结点,内容如下,
CS从入门到精通 候捷 58.3 CS从入门到精通 候捷 58.3 C#入门帮助 高手 158.3
3,修改结点的值(属性和子结点):
XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load( Server.MapPath("data.xml") );XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 foreach(XmlNode xn in nodeList)//遍历所有子节点 { XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型 if(xe.GetAttribute("genre")=="张三")//如果genre属性值为"张三" { xe.SetAttribute("genre","update张三");//则修改该属性为"update张三"XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 foreach(XmlNode xn1 in nls)//遍历 { XmlElement xe2=(XmlElement)xn1;//转换类型 if(xe2.Name=="author")//如果找到 { xe2.InnerText="亚胜";//则修改} } } } xmlDoc.Save( Server.MapPath("data.xml") );//保存。//////////////////////////////////////////////////////////////////////////////////////结果:将原来的所有结点的信息都修改了,xml的内容如下,
CS从入门到精通 候捷 58.3 CS从入门到精通 候捷 58.3 C#入门帮助 亚胜 158.3
4,修改结点(添加结点的属性和添加结点的自结点):
XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load( Server.MapPath("data.xml") );XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 foreach(XmlNode xn in nodeList) { XmlElement xe=(XmlElement)xn; xe.SetAttribute("test","111111");XmlElement xesub=xmlDoc.CreateElement("flag"); xesub.InnerText="1"; xe.AppendChild(xesub); } xmlDoc.Save( Server.MapPath("data.xml") );//////////////////////////////////////////////////////////////////////////////////////结果:每个结点的属性都添加了一个,子结点也添加了一个,内容如下,
CS从入门到精通 候捷 58.3 1 CS从入门到精通 候捷 58.3 1 C#入门帮助 亚胜 158.3 1
5,删除结点中的某一个属性:
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") );//////////////////////////////////////////////////////////////////////////////////////]结果:删除了结点的一个属性和结点的一个子结点,内容如下,
CS从入门到精通 候捷 58.3 CS从入门到精通 候捷 58.3 C#入门帮助 亚胜 158.3
6,删除结点:
XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load( Server.MapPath("data.xml") ); XmlNode root=xmlDoc.SelectSingleNode("Employees");XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes; for(int i=0;i结果:删除了符合条件的所有结点,原来的内容:
CS从入门到精通 候捷 58.3 CS从入门到精通 候捷 58.3 C#入门帮助 高手 158.3 C#入门帮助 高手 158.3
删除后的内容:
CS从入门到精通 候捷 58.3 CS从入门到精通 候捷 58.3
7,按照文本文件读取xml
System.IO.StreamReader myFile =new System.IO.StreamReader(Server.MapPath("data.xml"),System.Text.Encoding.Default);//注意System.Text.Encoding.Defaultstring myString = myFile.ReadToEnd();//myString是读出的字符串myFile.Close();三、高级应用
/*读取xml数据 两种xml方式*/something something /*第一种方法*/DS.ReadXml("your xmlfile name");Container.DataItem("bb");Container.DataItem("cc");DS.ReadXmlSchema("your xmlfile name");/*第二种方法*/ 如果我要找到123然后取到321应该怎么写呢?using System.XML;XmlDataDocument xmlDoc = new System.Xml.XmlDataDocument();xmlDoc.Load(@"c:/Config.xml");XmlElement elem = xmlDoc.GetElementById("add");string str = elem.Attributes["value"].Value/*第三种方法: SelectSingleNode 读取两种格式的xml *---/--------------------------------------------------------------------Data Source=yf; user id=ctm_dbo;password=123 --------------------------------------------------------------------------XmlDocument doc = new XmlDocument();doc.Load(strXmlName);XmlNode node=doc.SelectSingleNode("/configuration/appSettings/ConnectionString");if(node!=null){string k1=node.Value; //nullstring k2=node.InnerText;//Data Source=yf; user id=ctm_dbo;password=123string k3=node.InnerXml;//Data Source=yf; user id=ctm_dbo;password=123node=null;}******************************************************************** **--------------------------------------------------------------------**XmlNode node=doc.SelectSingleNode("/configuration/appSettings/add");if(node!=null){string k=node.Attributes["key"].Value;string v=node.Attributes["value"].Value;node=null;}*--------------------------------------------------------------------*XmlNode node=doc.SelectSingleNode("/configuration/appSettings/add");if(node!=null){XmlNodeReader nr=new XmlNodeReader(node);nr.MoveToContent();//检查当前节点是否是内容节点。如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。nr.MoveToAttribute("value");string s=nr.Value;node=null;}
关于"XML文档基本操作的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
节点
结点
属性
内容
帮助
结果
文件
张三
方法
文档
文本
类型
高手
篇文章
基本操作
示例
分析
个子
元素
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
搜小说软件开发
腾讯大型数据库多少钱
网络安全双创平台
上海艾绒软件开发有限公司
数据库中角色与权限管理
mysql数据库字段大小规范
广西统计网数据库
公安内部网络安全简报
学软件开发得多少钱
我的世界32k服务器网易版
国际网络安全管理组织
电脑显示服务器打不开怎么办
假期安全及网络安全教育
网络安全方面的电视节目
徐州艾特网络技术有限公司
阿里巴巴服务器空间要多少
数据库导入表表分区缺表
数据库点星表达式
网络安全审查对外国通讯的影响
数据库无法锁定单元格
档案软件开发信
重庆计算机网络技术实习
数据库设计 专业
新世界玩错服务器了
江苏诚信软件开发专业服务
丰台区品质软件开发售后保障
湖南网络安全空间协会
软件开发公司风险应对方案
安卓驱动软件开发是什么
浅谈校园信息网络安全问题