CXML基础入门(XML文件内容增删改查清)
前言:
最近对接了一个第三方的项目,该项目的数据传输格式是XML。由于工作多年只有之前在医疗行业的时候有接触过少量数据格式是XML的接口,之后就几乎没有接触过了。因此对于XML这块自己感觉还是有很多盲点和不足的,所以自己通过一些网上的资料总结了一下XML相关知识点。
什么是XML?XML是一种可扩展标记语言(EXtensible Markup Language)。 XML是一种很像HTML的标记语言。 XML的设计宗旨是传输数据,而不是显示数据。 XML标签没有被预定义。您需要自行定义标签。 XML被设计为具有自我描述性。 XML是 W3C 的推荐标准。
XML的优缺点XML的优点语法严谨,格式统一,符合标准。 容易与其他系统进行远程交互,数据共享比较方便。 XML的缺点扩展性、弹性、易读性均不佳。 XML文件庞大,文件格式复杂,传输占带宽。 服务器端和客户端解析XML花费较多的资源和时间。
XML简单示例
在线xml验证工具:https://tool.ip138.com/xml/
<?xml version="1.0" encoding="utf-8"?> 追逐时光者 XML学习教程 时光出版社
XML中5个预定义的实体引用
&&和号
<<小于
>>大于
""省略号
""引号
转义字符符号名称
严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的。这时,Xml有两种解决方案来处理这种问题。
CDATA转义字符 C#把特殊符号转换为转义字符 /// /// 特殊符号转换为转义字符 /// /// /// public string XmlSpecialSymbolConvert(string xmlStr) { return xmlStr.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace(""", """).Replace(""", """); }
C#创建简单的XML文件 /// /// 创建Xml文件 /// public void CreateXmlFile() { XmlDocument xmlDoc = new XmlDocument(); //创建类型声明节点 XmlNode node = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", ""); xmlDoc.AppendChild(node); //创建Xml根节点 XmlNode root = xmlDoc.CreateElement("books"); xmlDoc.AppendChild(root); XmlNode root1 = xmlDoc.CreateElement("book"); root.AppendChild(root1); //创建子节点 CreateNode(xmlDoc, root1, "author", "追逐时光者"); CreateNode(xmlDoc, root1, "title", "XML学习教程"); CreateNode(xmlDoc, root1, "publisher", "时光出版社"); //将文件保存到指定位置 xmlDoc.Save("D://xmlSampleCreateFile.xml"); } /// /// 创建节点 /// /// xml文档 /// Xml父节点 /// 节点名 /// 节点值 /// public void CreateNode(XmlDocument xmlDoc, XmlNode parentNode, string name, string value) { //创建对应Xml节点元素 XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null); node.InnerText = value; parentNode.AppendChild(node); }创建生成的Xml文件<?xml version="1.0" encoding="utf-8"?> 追逐时光者 XML学习教程 时光出版社
C#在XML文件添加节点
这次我们是在上一次新建的XML文件中做操作,在book二级节点下添加一个新的节点名为publishdate(发布时间),该节点的value为2022-03-26。 private static void AppendNode() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("D://xmlSampleCreateFile.xml");//加载Xml文件 XmlNode root = xmlDoc.SelectSingleNode("books/book");//选择要添加子节点的book节点 //创建一个新的Xml节点元素 XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, "publishdate", null); node.InnerText = "2022-03-26"; root.AppendChild(node);//将创建的item子节点添加到items节点的尾部 xmlDoc.Save("D://AppendNodeFile.xml");//保存修改的Xml文件内容 }添加节点成功后的XML文件内容<?xml version="1.0" encoding="utf-8"?> 追逐时光者 XML学习教程 时光出版社 2022-03-26
C#修改XML文件节点的数据
这次我们是在第一次新建的XML文件中做操作,把在book二级节点下的author的内容改成:大姚同学 private static void UpdateXml() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("D://xmlSampleCreateFile.xml");//加载Xml文件 XmlNode xns = xmlDoc.SelectSingleNode("books/book");//查找要修改的节点 XmlNodeList xmlNodeList = xns.ChildNodes;//取出book节点下所有的子节点 foreach (XmlNode xmlNode in xmlNodeList) { XmlElement xmlElement = (XmlElement)xmlNode;//将节点转换一下类型 if (xmlElement.Name=="author")//判断该子节点是否是要查找的节点 { xmlElement.InnerText = "大姚同学";//设置新值 break; } } xmlDoc.Save("D://UpdateXml.xml");//保存修改的Xml文件内容 }修改后的XML文件内容<?xml version="1.0" encoding="utf-8"?> 大姚同学 XML学习教程 时光出版社
C#删除XML文件中的指定节点
这次我们是在第一次新建的XML文件中做操作,删除author节点。 private static void DeleteXmlNode() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("D://xmlSampleCreateFile.xml");//加载Xml文件 XmlNode xns = xmlDoc.SelectSingleNode("books/book");//查找要删除的根节点 #region 删除author节点 var delNode = xmlDoc.SelectSingleNode("books/book/" + "author"); xns.RemoveChild(delNode); #endregion xmlDoc.Save("D://DeleteXmlNode.xml");//保存操作后的Xml文件内容 }
C#清空指定XML节点数据
这次我们是在第一次新建的XML文件中做操作,清空author节点下的数据。 private static void ClearDataXmlNode() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("D://xmlSampleCreateFile.xml");//加载Xml文件 XmlNode xns = xmlDoc.SelectSingleNode("books/book");//查找要删除的根节点 #region 清空author节点下的数据 XmlNodeList xmlNodeList = xns.ChildNodes;//取出book节点下所有的子节点 foreach (XmlNode xmlNode in xmlNodeList) { XmlElement xmlElement = (XmlElement)xmlNode;//将节点转换一下类型 if (xmlElement.Name == "author")//判断该子节点是否是要查找的节点 { //清空author节点下的数据 xmlElement.RemoveAll();//删除该节点的全部内容 } } #endregion xmlDoc.Save("D://ClearDataXmlNode.xml");//保存操作后的Xml文件内容 }
本文来自https://www.cnblogs.com/Can-daydayup/p/16036872.html
除旧迎信,年味政浓!政信人给您拜年啦!视频加载中金鼠辞旧岁,祥牛迎新春!2021年的农历春节马上就要到了。值此新春佳节到来之际,我们向长期以来关心支持集团事业发展的各级领导及各界人士,向已开展或即将开展合作的各位合作伙
海归近日回国该不该受到谴责最近几天,回归者似乎已经失去了他们以前在舆论舞台上的荣耀,有些人甚至被数千人谴责。该事件源于几个在线帖子33,354。一些在全球疫情爆发后回国的海外学生声称遭受了被迫隔离,并抱怨国
iPhone12特斯拉定制版上线,售价4万块起步,真的值吗?苹果成功将智能手机的售价拉升至万元,因此很多网友吐槽iPhone12ProMax简直就是土豪专属的奢侈品手机,普通人是无力消费的起。但其实有钱人的世界是我们无法想象的,比如国外厂商
自动驾驶普及的初期,敞篷车会消失吗?今天小编忽然想到一个问题自动驾驶普及的初期,敞篷车会消失吗?首先我们来对比下敞篷车和现在的自动驾驶汽车的区别首先是敞篷车,无论从什么角度看,360度全景天窗,可以与减速带相媲美的底
千元机上顶配方案?72万跑分双实体肩键,游戏党买早了从发展趋势来看,智能手机讲究的是极致的简约,增加屏占比,去掉按键耳机孔甚至听筒,甚至未来充电孔都会被无线充电取代。但是偏偏游戏手机却反其道而行之,努力增加各种按键灯效,再加上厚重的
内燃机离开?自动驾驶到来?3月份的汽车圈注定是不平凡的,前有小米滴滴官宣造车,给汽车圈注入新的血液,后有奥迪大众发布声明,停止对新型内燃机进行研发,全面转型电动汽车。在自动驾驶领域一直有这样的说法,由于内燃
自动驾驶下的道德困境1967年英国哲学家菲利帕福特首次提出的电车难题,被很多人熟知一辆失控的列车在铁轨上行驶,在列车正在行进的轨道上,有五个人被绑起来,无法动弹,列车将要碾过他们,若此时你站在改变列车
真后悔年前辞职了,现在在家休长假了往年这个时候,对于人才市场的供求两方可谓是求职招聘的黄金时期,也就是我们时常说的金三银四求职季。这个时间段企业岗位空缺比较多,年前辞职的人在找工作,年后想跳槽的也在伺机观望。然而今
华人在国外屡遭歧视屡被殴打为自卫组建合伙买枪目前国外疫情严重,人们指责美国政府在预防和控制方面行动迟缓效率低下。媒体批评美国政府浪费了中国它为全球抗击艾滋病赢得的宝贵时间。在这种情况下,一些美国政客不仅没有检查他们政策的不当
如何避免被用万能钥匙的人蹭网?这5种方法帮你彻底清除蹭网者不少用户都有这样的体验,经常莫名其妙就被人蹭了网,自己用起来网速慢不说,还容易产生互联网安全隐患。甚至有的时候被蹭网了,自己还傻傻的不知道。那么,问题来了,如何避免被用万能钥匙的人
林志颖花500万打造的智能家居,其实只需要几万块就能搞定在一场综艺节目中,主持人参观了林志颖的豪宅,整体的设计格调非常高大上,而且让人意外的是,林志颖竟然在客厅中直接摆了一辆法拉利赛车,非常拉风。而且还给孩子们设置了独立的游玩区,孩子们