C#|C# XML基础入门(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学习教程 - 锐客网时光出版社

XML5个预定义的实体引用
< < 小于
> > 大于
& & 和号
' ' 单引号
" " 引号
C#把特殊字符转换为实体引用
public string XmlSpecialSymbolConvert(string xmlStr) { if (xmlStr.Contains("&") || xmlStr.Contains("<") || xmlStr.Contains(">") || xmlStr.Contains("\"") || xmlStr.Contains("\'")) { xmlStr = xmlStr.Replace("&", "&"); xmlStr = xmlStr.Replace("<", "<"); xmlStr = xmlStr.Replace(">", ">"); xmlStr = xmlStr.Replace("\"", """); xmlStr = xmlStr.Replace("\'", "'"); }return xmlStr ; }

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学习教程 - 锐客网 时光出版社

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学习教程 - 锐客网 时光出版社 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学习教程 - 锐客网 时光出版社

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); #endregionxmlDoc.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(); //删除该节点的全部内容 } } #endregionxmlDoc.Save("D://ClearDataXmlNode.xml"); //保存操作后的Xml文件内容 }

学习参考资料 C#读写xml文件
w3cSchool-XML 教程
C#操作XML的通用方法总结
.NET中XML序列化和反序列化常用类
.NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结
【C#|C# XML基础入门(XML文件内容增删改查清)】

    推荐阅读