家好,我是华山自控编程朱老师
前几天一个学员在学习c#读写xml文件时。一直没有真正删除xml文件的节点,
程序输出结果如下:
但是xml文件里面该节点还是存在,不知道什么原因。
程序代码截图如下:
其实很多初学者在读写xml文件时,都会遇到类似的问题,不知道xml文件如何真正交互,其实xml文件也是文件,也是遵循文件的基本操作,打开文件,读写文件,关闭保存文件三个步骤,。下面我们就对xml文件类的api进行详细分析。
问题分析:
这个代码第202行,XmlNode removeNode = xmlNode.RemoveChild(node); 确实是有删除节点的代码。
但是这个代码对xmlnode对象进行删除,也就是它只是一个内存的动作。还没有存储到磁盘文件上,就是少了一个文件存储的操作。
解决方法:
在代码XmlNode removeNode = xmlNode.RemoveChild(node);后面添加文件保存动作:xmlDoc.Save(path);
再次运行程序,输出结果如下:
其实对XmlNode对象的添加删除修改等操作后,都需要有一个文件保存的操作。也就是文件操作的三部曲,打开加载文件,读写文件,关闭保存文件。
以上就是c#读写xml文件的一些基本使用和总结,另外在延伸下XmlNode类相关的知识点:
MSDN中小结的具体功能包括:
AppendChild(XmlNode)
将指定的节点添加到该节点的子节点列表的末尾。
Clone()
创建此节点的副本。
CloneNode(Boolean)
当在派生类中被重写时,创建该节点的副本。
当前节点范围内离给定的命名空间 URI 最近的 xmlns 声明,并返回声明中定义的前缀。
InsertAfter(XmlNode, XmlNode)
将指定的节点紧接着插入指定的引用节点之后。
InsertBefore(XmlNode, XmlNode)
将指定的节点紧接着插入指定的引用节点之前。
PrependChild(XmlNode)
将指定的节点添加到该节点的子节点列表的开头。
RemoveAll()
移除当前节点的所有子节点和/或属性。
RemoveChild(XmlNode)
移除指定的子节点。
ReplaceChild(XmlNode, XmlNode)
用 oldChild 节点替换子节点 newChild。
SelectNodes(String)
选择匹配 XPath 表达式的节点列表。
SelectNodes(String, XmlNamespaceManager)
选择匹配 XPath 表达式的节点列表。 XPath 表达式中的任何前缀都使用提供的 XmlNamespaceManager 进行解析。
SelectSingleNode(String)
选择匹配 XPath 表达式的第一个 XmlNode。
SelectSingleNode(String, XmlNamespaceManager)
选择匹配 XPath 表达式的第一个 XmlNode。 XPath 表达式中的任何前缀都使用提供的 XmlNamespaceManager 进行解析。
以上就是初学者在学习c#在操作xml文件时常见的问题。总结如下:
1:实例化XmlDocument对象,加载文件,获取节点对象,操作节点(增删改),保存文件。
点击领取上位机编程全套入门教程+工具https://s.pdb2.com/pages/20230307/CnORDNt9HimMjNS.html