C#實現XML的增刪查改
命名空間:using System.Xml;
1、查找某個節點是否存在:
private XmlDocument xmldoc;
private string mod="1";
private bool findNode()
{
xmldoc = new XmlDocument(); xmldoc.Load("D://a.xml"); //加載xml文檔內容,路徑為xml路徑 XmlNode s = xmldoc.SelectSingleNode("//" + "model");//第一層節點
if (s.HasChildNodes)
{
XmlNodeList xnl = s.ChildNodes;//子節點列表
foreach (XmlNode xn in xnl)
{
XmlElement xn1 = (XmlElement)xn;//節點轉換為元素
if (xn1.Name == mod)//節點找到,返回true
{
return true;
}
}
return false;//節點沒找到,返回false
}
}
2、增加節點:
添加節點,如果有多級節點,從n級節點往上添加節點的順序添加。
private static XmlElement xmlem;
public bool AddNode( )
{
xmldoc = new XmlDocument();
if (!File.Exists("D://a.xml"))//xml文件不存在
{
XmlDeclaration xmldecl;
xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null); //xml頂部聲明
xmldoc.AppendChild(xmldecl);//xml添加頭部聲明
xmlem = xmldoc.CreateElement("", "model", ""); //創建第一級元素
XmlElement xe8= xmldoc.CreateElement(mod); //創建第一級節點的子節點,即第二級節點,要添加的節點
xmlem.AppendChild(xe8); //在第一級節點追加第二級節點
xmldoc.AppendChild(xmlem); //文件中添加添加第一級節點和它的子節點
}
else//xml文件存在
{
xmldoc.Load(Sett.pahXml)//加載xml內容
if (!findNode()) //查找節點不存在
{
XmlNode rot = xmldoc.SelectSingleNode("//model"); //挑選第一個節點
xmlem = xmldoc.CreateElement(mod); //創建要添加的節點
rot.AppendChild(xmlem); //添加節點
xmldoc.AppendChild(rot);
}
}
xmldoc.Save("D://a.xml");
return true;
}
3、刪除節點:
public bool RemoveNode()
{
xmldoc = new XmlDocument();
if (!File.Exists("D://a.xml"))
{
return true;
}
else
{
xmldoc.Load(Sett.pahXml);
if (findNode())//節點存在
{
XmlNode root = xmldoc.SelectSingleNode("//model/"+Sett.station.mod);//查找父節點
XmlNodeList nl = root.ChildNodes;
foreach (XmlNode no in nl)
{
XmlElement f = (XmlElement)no;
if (f.Name == station.ID)
{
root.RemoveChild(f);//刪除節點
break;
}
}
xmldoc.Save(Sett.pahXml);
return true;
}
else
{
return true;
}
}
}
4、修改節點:
private bool modifyNode()
{
xmldoc.Load(Sett.pahXml);
if (findmolde())
{
XmlNode root = xmldoc.SelectSingleNode("//model/" + station.mod);//上級節點
if(findID())//查找節點是否存在
{
XmlNodeList nl = root.ChildNodes;
foreach(XmlNode no in nl)
{
XmlElement f = (XmlElement)no;
if(f.Name==station.ID)//查找到要修改的節點
{
f.SetAttribute("name", station.Name);//修改屬性
f.SetAttribute("Time", station.time.ToString());
f.SetAttribute("UPH", station.UPH.ToString());
XmlNodeList nls = f.ChildNodes;
foreach(XmlNode no2 in nls)//修改第一級子節點
{
XmlElement g = (XmlElement)no2;
if (g.Name == "Function")
{
g.InnerText = station.Func;
continue;
}
if (g.Name == "Leader")
{
g.InnerText = station.Leader;
continue;
}
if (g.Name =="ProcStep")
{
g.InnerText = station.Proc;
continue;
}
if(g.Name=="Set")
{
XmlNodeList h = g.ChildNodes;//修改第二級子節點
g.RemoveAll();
foreach(KeyValuePair<string,int> kv in station.set)
{
string dd = kv.Key;
XmlElement xe5 = xmldoc.CreateElement(dd);
xe5.InnerText = kv.Value.ToString();
g.AppendChild(xe5);
}
}
}
xmldoc.Save(Sett.pahXml);return true;
}else{return false;}
}else{return false;}
}


https://www.cnblogs.com/guxia/p/8242483.html
C#實現XML的增刪查改的更多相关文章
- VB&XML的增删改查
简介:XML的增删改查 开发过程中有许多后台操作XML的过程,每次需要操作时都是找很多代码来参考或者百度一下.今天决定补充下XML操作的知识,把XML操作的增删改查都写了一遍,供以后开发参考 查询: ...
- 对oracle里面clob字段里面xml的增删改查学习
这段时间,我使用系统表里面有clob字段里面存放的xml信息,我们如何对xml进行增删改查操作呢,自己参考了很多也学到很多,给大家分享一下 首先我们先建测试表 CREATE TABLE EFGP_23 ...
- 【基础篇】js对本地文件增删改查--改
前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...
- java实现xml文件增删改查
java一次删除xml多个节点: 方案1.你直接改动了nodeList,这一般在做循环时是不同意直接这么做的. 你能够尝试在遍历一个list时,在循环体同一时候删除list里的内容,你会得到一个异常. ...
- Mybatis之基于XML的增删改查
这里先吐槽下,写的半天的东西,IE浏览器弹出调试窗口导致写的东西全部没保存,搞得我还要重新用谷歌写,思路全没了,fuck. 前面学习了下spring的DAO层,说起DAO层,那ORM肯定是少不了的,O ...
- Mybatis_2.基于XML的增删改查
1.实体类User.java public class User { private int id; private String name; private int age; //getter.se ...
- java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...
- 使用idea对XML的增删改查
XML:是一种可扩展标记性的语言,与java语言无关,它可以自定义标签. 1.首先需要到导入Dom4j架包,与自己所时候的ide关联 2.编写自己的xml文件,入上图所示(里面的所有元素及元素中的属性 ...
- c# xml的增删改查操作 xmlDocument 的用法
1.将xml转换为DataTable string path = "";//xml的位置StringReader sr = null;XmlTextReader xmlReader ...
随机推荐
- Linux系统学习之文件管理
Linux目录分布通常是树形,所以它的结构又称为目录树. 一.文件和目录管理 [root@Cfhost-170820-UCNK /]# cd / [root@Cfhost-170820-UCNK /] ...
- centos7搭建logstash
前两节已经成功完成ek的搭建,还剩最后的一个日志上传的功能 依次执行如下命令 cd /home/elk wget https://artifacts.elastic.co/downloads/logs ...
- Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position
在source那边,执行: flush logs;show master status; 记下File, Position. 在target端,执行: CHANGE MASTER TO MASTER_ ...
- HNOI2014做题笔记
HNOI2014 世界树(虚树.倍增) \(\sum M \leq 3 \times 10^5\)虚树没得跑 对于所有重要点和它们的\(LCA\)建立虚树,然后计算出每一个虚树上的点被哪个重要点控制. ...
- 从angularjs传递参数至Web API
昨天分享的博文<angularjs呼叫Web API>http://www.cnblogs.com/insus/p/7772022.html,只是从Entity获取数据,没有进行参数POS ...
- flask-script&flask-migrate使用
一.简介 Flask-script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell.设置数据库的脚本.cronjobs及其他运行在web应用之外的 ...
- zookeepeer4字命令实践
环境 leader:192.168.116.143 fllower:192.168.116.142 fllower:192.168.116.144 命令:conf——查看其他主机的配置文件 [root ...
- Codeforces 718C solution
C. Sasha and Array time limit per test : 5 seconds memory limit per test : 256 megabytes Descrip ...
- 「Fluent Python」今年最佳技术书籍
Fluent Python 读书手记 Python数据模型:特殊方法用来给整个语言模型特殊使用,一致性体现.如:__len__, __getitem__ AOP: zope.inteface 列表推导 ...
- NTP服务部署和测试
1. 概述2. 部署3. 配置4. 客户端配置4.1 客户端安装ntpdate4.2 同步设置 1. 概述 本篇博客主要记录如何部署一台NTP服务器,用于内网时间同步. 时间服务器对于集群内部节点之间 ...