

C# XML基础入门(XML文件内容增删改查清)
source link: https://www.cnblogs.com/Can-daydayup/p/16036872.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

文章正文:
最近对接了一个第三方的项目,该项目的数据传输格式是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个预定义的实体引用
转义字符符号名称
&
&
和号
<
<
小于
>
>
大于
'
'
省略号
"
"
引号
严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的。这时,Xml有两种解决方案来处理这种问题。
- CDATA
C#把特殊符号转换为转义字符
/// <summary> /// 特殊符号转换为转义字符 /// </summary> /// <param name="xmlStr"></param> /// <returns></returns> public string XmlSpecialSymbolConvert(string xmlStr) { return xmlStr.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\'", "'").Replace("\"", """); }
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文件内容 }
学习参考资料
Recommend
-
14
术→技巧, 研发 Python XML文件格式的解析 钱魏Way · 2020-11-24 ·...
-
14
数据库准备 data_test.sql: /* SQLyog Enterprise v12.08 (64 bit) MySQL - 5.7.31 : Database - data_test ********************************************************************* */ /*!40101 SET NAMES utf...
-
3
国家网信办指导网站平台加强涉东航客机坠毁网络谣...
-
4
源头已查清!关闭!禁言! 记者从国家网信办获悉,“3·21”东航MU5735航空器飞行事故,广大网民密切关注救援进展和事故原因调查。但是,个别网民却借此散播网络谣...
-
6
SSM整合_年轻人的第一个增删改查_基础环境搭建 - 蔚然丶丶 - 博客园 SSM整合_年轻人的第一个增删改查_基础环境搭建 ...
-
8
Table of Contents 🔥如果觉得博主的文章还不错的话,请👍三连支持👍一下博主哦 这是java老师的一个小组任务。拿来练手,让我对Java入门有了一些基本的感悟与熟悉。 二,页面设计 五组——熟食包点...
-
7
上一篇文章中,我们介绍了:CSV文件输入组件的各种详细设置,实战演示了如何操作它来读取磁盘上的CSV文件。最后还扩展了,使用文本文件输入组件读取读取磁盘上的CSV文件。在本篇文章中,我们接着介绍:kettle中的XML文件输入组件(Get data from XML)。
-
7
python读取xml文件 | K's Life Tag Cloud ...
-
0
Java读取XML文件 通过w3c包 <file>:xml文件的路径、文件对象、URI地址<name>:标签名<index>:集合中子元素的下标
-
8
大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 以下是正文! 对象存储是什么? 对象存储是一种...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK