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

简介: 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 version="1.0" encoding="utf-8"?>
<books>
    <book>
        <author>追逐时光者</author>
        <title>XML学习教程</title>
        <publisher>时光出版社</publisher>
    </book>
</books>

XML中5个预定义的实体引用

转义字符 符号 名称
&amp; & 和号
&lt; < 小于
&gt; > 大于
&apos; ' 省略号
&quot; " 引号

严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的。这时,Xml有两种解决方案来处理这种问题。

  1. CDATA
  2. 转义字符

C#把特殊符号转换为转义字符

/// <summary>
        /// 特殊符号转换为转义字符
        /// </summary>
        /// <param name="xmlStr"></param>
        /// <returns></returns>
        public string XmlSpecialSymbolConvert(string xmlStr)
        {
            return xmlStr.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("\'", "&apos;").Replace("\"", "&quot;");
        }

C#创建简单的XML文件

 /// <summary>
        /// 创建Xml文件
        /// </summary>
        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");
        }
        /// <summary>    
        /// 创建节点    
        /// </summary>    
        /// <param name="xmlDoc">xml文档</param>    
        /// <param name="parentNode">Xml父节点</param>    
        /// <param name="name">节点名</param>    
        /// <param name="value">节点值</param>    
        ///   
        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"?>
<books>
  <book>
    <author>追逐时光者</author>
    <title>XML学习教程</title>
    <publisher>时光出版社</publisher>
  </book>
</books>

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"?>
<books>
  <book>
    <author>追逐时光者</author>
    <title>XML学习教程</title>
    <publisher>时光出版社</publisher>
    <publishdate>2022-03-26</publishdate>
  </book>
</books>

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"?>
<books>
  <book>
    <author>大姚同学</author>
    <title>XML学习教程</title>
    <publisher>时光出版社</publisher>
  </book>
</books>

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文件内容
        }
相关文章
|
15天前
|
XML Java 数据库连接
二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)
二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)
65 19
|
5月前
|
开发框架 .NET API
RESTful API 设计与实现:C# 开发者的一分钟入门
【10月更文挑战第5天】本文从零开始,介绍了如何使用 C# 和 ASP.NET Core 设计并实现一个简单的 RESTful API。首先解释了 RESTful API 的概念及其核心原则,然后详细说明了设计 RESTful API 的关键步骤,包括资源识别、URI 设计、HTTP 方法选择、状态码使用和错误处理。最后,通过一个用户管理 API 的示例,演示了如何创建项目、定义模型、实现控制器及运行测试,帮助读者掌握 RESTful API 的开发技巧。
178 7
|
5月前
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
132 1
|
5月前
|
C#
C#入门
C#入门
38 0
|
3月前
|
C#
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
|
4月前
|
XML Android开发 数据格式
Eclipse 创建 XML 文件
Eclipse 创建 XML 文件
74 2
|
4月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
439 8
|
4月前
|
XML 前端开发 Java
XML基本概念入门学习指南
XML(eXtensible Markup Language)是一种可扩展的标记语言,和HTML语言语法类似,同属于标记语言。
207 14
|
5月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
135 8
|
4月前
|
程序员 C# 图形学
全面的C#/.NET自学入门指南
全面的C#/.NET自学入门指南
122 0

相关课程

更多