C# XML基础入门小结(XML文件内容增删改查清)

  目录

  前言:

  最近对接了一个第三方的项目,该项目的数据传输格式是XML。由于工作多年只有之前在医疗行业的时候有接触过少量数据格式是XML的接口,之后就几乎没有接触过了。因此对于XML这块自己感觉还是有很多盲点和不足的,所以自己通过一些网上的资料总结了一下XML相关知识点。

  什么是XML?

  XML的优缺点

  XML的优点

  XML的缺点

  XML简单示例

  在线xml验证工具:http://tools.jb51.net/code/xmlcodeformat

  <?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文件内容

  }

  学习参考资料

  w3cSchool-XML 教程

  .NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结

  到此这篇关于C# XML基础入门小结(XML文件内容增删改查清)的文章就介绍到这了,更多相关C# XML基础入门内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  您可能感兴趣的文章: