前言: 最近对接了一个第三方的项目,该项目的数据传输格式是XML。由于工作多年只有之前在医疗行业的时候有接触过少量数据格式是XML的接口,之后就几乎没有接触过了。因此对于XML这块自己感觉还是有很多盲点和不足的,所以自己通过一些网上的资料总结了一下XML相关知识点。 什么是XML?XML是一种可扩展标记语言(EXtensibleMarkupLanguage)。XML是一种很像HTML的标记语言。XML的设计宗旨是传输数据,而不是显示数据。XML标签没有被预定义。您需要自行定义标签。XML被设计为具有自我描述性。XML是W3C的推荐标准。 XML的优缺点XML的优点语法严谨,格式统一,符合标准。容易与其他系统进行远程交互,数据共享比较方便。XML的缺点扩展性、弹性、易读性均不佳。XML文件庞大,文件格式复杂,传输占带宽。服务器端和客户端解析XML花费较多的资源和时间。 XML简单示例 在线xml验证工具:https:tool。ip138。comxml ?xmlversion1。0encodingutf8?booksbook追逐时光者authortitleXML学习教程titlepublisher时光出版社publisherbookbooks XML中5个预定义的实体引用 和号 小于 大于 省略号 引号 转义字符符号名称 严格地讲,在XML中仅有字符和是非法的。省略号、引号和大于号是合法的。这时,Xml有两种解决方案来处理这种问题。 CDATA转义字符C把特殊符号转换为转义字符summary特殊符号转换为转义字符summaryparamnamexmlStrparamreturnsreturnspublicstringXmlSpecialSymbolConvert(stringxmlStr){returnxmlStr。Replace(,)。Replace(,)。Replace(,)。Replace(,)。Replace(,);} C创建简单的XML文件summary创建Xml文件summarypublicvoidCreateXmlFile(){XmlDocumentxmlDocnewXmlDocument();创建类型声明节点XmlNodenodexmlDoc。CreateXmlDeclaration(1。0,utf8,);xmlDoc。AppendChild(node);创建Xml根节点XmlNoderootxmlDoc。CreateElement(books);xmlDoc。AppendChild(root);XmlNoderoot1xmlDoc。CreateElement(book);root。AppendChild(root1);创建子节点CreateNode(xmlDoc,root1,author,追逐时光者);CreateNode(xmlDoc,root1,title,XML学习教程);CreateNode(xmlDoc,root1,publisher,时光出版社);将文件保存到指定位置xmlDoc。Save(D:xmlSampleCreateFile。xml);}summary创建节点summaryparamnamexmlDocxml文档paramparamnameparentNodeXml父节点paramparamnamename节点名paramparamnamevalue节点值parampublicvoidCreateNode(XmlDocumentxmlDoc,XmlNodeparentNode,stringname,stringvalue){创建对应Xml节点元素XmlNodenodexmlDoc。CreateNode(XmlNodeType。Element,name,null);node。InnerTparentNode。AppendChild(node);}创建生成的Xml文件?xmlversion1。0encodingutf8?booksbook追逐时光者authortitleXML学习教程titlepublisher时光出版社publisherbookbooks C在XML文件添加节点 这次我们是在上一次新建的XML文件中做操作,在book二级节点下添加一个新的节点名为publishdate(发布时间),该节点的value为20220326。privatestaticvoidAppendNode(){XmlDocumentxmlDocnewXmlDocument();xmlDoc。Load(D:xmlSampleCreateFile。xml);加载Xml文件XmlNoderootxmlDoc。SelectSingleNode(booksbook);选择要添加子节点的book节点创建一个新的Xml节点元素XmlNodenodexmlDoc。CreateNode(XmlNodeType。Element,publishdate,null);node。InnerText20220326;root。AppendChild(node);将创建的item子节点添加到items节点的尾部xmlDoc。Save(D:AppendNodeFile。xml);保存修改的Xml文件内容}添加节点成功后的XML文件内容?xmlversion1。0encodingutf8?booksbook追逐时光者authortitleXML学习教程titlepublisher时光出版社publisherpublishdate20220326publishdatebookbooks C修改XML文件节点的数据 这次我们是在第一次新建的XML文件中做操作,把在book二级节点下的author的内容改成:大姚同学privatestaticvoidUpdateXml(){XmlDocumentxmlDocnewXmlDocument();xmlDoc。Load(D:xmlSampleCreateFile。xml);加载Xml文件XmlNodexnsxmlDoc。SelectSingleNode(booksbook);查找要修改的节点XmlNodeListxmlNodeListxns。ChildN取出book节点下所有的子节点foreach(XmlNodexmlNodeinxmlNodeList){XmlElementxmlElement(XmlElement)xmlN将节点转换一下类型if(xmlElement。Nameauthor)判断该子节点是否是要查找的节点{xmlElement。InnerText大姚同学;设置新值}}xmlDoc。Save(D:UpdateXml。xml);保存修改的Xml文件内容}修改后的XML文件内容?xmlversion1。0encodingutf8?booksbook大姚同学authortitleXML学习教程titlepublisher时光出版社publisherbookbooks C删除XML文件中的指定节点 这次我们是在第一次新建的XML文件中做操作,删除author节点。privatestaticvoidDeleteXmlNode(){XmlDocumentxmlDocnewXmlDocument();xmlDoc。Load(D:xmlSampleCreateFile。xml);加载Xml文件XmlNodexnsxmlDoc。SelectSingleNode(booksbook);查找要删除的根节点region删除author节点vardelNodexmlDoc。SelectSingleNode(booksbookauthor);xns。RemoveChild(delNode);endregionxmlDoc。Save(D:DeleteXmlNode。xml);保存操作后的Xml文件内容} C清空指定XML节点数据 这次我们是在第一次新建的XML文件中做操作,清空author节点下的数据。privatestaticvoidClearDataXmlNode(){XmlDocumentxmlDocnewXmlDocument();xmlDoc。Load(D:xmlSampleCreateFile。xml);加载Xml文件XmlNodexnsxmlDoc。SelectSingleNode(booksbook);查找要删除的根节点region清空author节点下的数据XmlNodeListxmlNodeListxns。ChildN取出book节点下所有的子节点foreach(XmlNodexmlNodeinxmlNodeList){XmlElementxmlElement(XmlElement)xmlN将节点转换一下类型if(xmlElement。Nameauthor)判断该子节点是否是要查找的节点{清空author节点下的数据xmlElement。RemoveAll();删除该节点的全部内容}}endregionxmlDoc。Save(D:ClearDataXmlNode。xml);保存操作后的Xml文件内容} 本文来自https:www。cnblogs。comCandaydayupp16036872。html