命名空間: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的增刪查改的更多相关文章

  1. VB&XML的增删改查

    简介:XML的增删改查 开发过程中有许多后台操作XML的过程,每次需要操作时都是找很多代码来参考或者百度一下.今天决定补充下XML操作的知识,把XML操作的增删改查都写了一遍,供以后开发参考 查询: ...

  2. 对oracle里面clob字段里面xml的增删改查学习

    这段时间,我使用系统表里面有clob字段里面存放的xml信息,我们如何对xml进行增删改查操作呢,自己参考了很多也学到很多,给大家分享一下 首先我们先建测试表 CREATE TABLE EFGP_23 ...

  3. 【基础篇】js对本地文件增删改查--改

    前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...

  4. java实现xml文件增删改查

    java一次删除xml多个节点: 方案1.你直接改动了nodeList,这一般在做循环时是不同意直接这么做的. 你能够尝试在遍历一个list时,在循环体同一时候删除list里的内容,你会得到一个异常. ...

  5. Mybatis之基于XML的增删改查

    这里先吐槽下,写的半天的东西,IE浏览器弹出调试窗口导致写的东西全部没保存,搞得我还要重新用谷歌写,思路全没了,fuck. 前面学习了下spring的DAO层,说起DAO层,那ORM肯定是少不了的,O ...

  6. Mybatis_2.基于XML的增删改查

    1.实体类User.java public class User { private int id; private String name; private int age; //getter.se ...

  7. java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

    一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...

  8. 使用idea对XML的增删改查

    XML:是一种可扩展标记性的语言,与java语言无关,它可以自定义标签. 1.首先需要到导入Dom4j架包,与自己所时候的ide关联 2.编写自己的xml文件,入上图所示(里面的所有元素及元素中的属性 ...

  9. c# xml的增删改查操作 xmlDocument 的用法

    1.将xml转换为DataTable string path = "";//xml的位置StringReader sr = null;XmlTextReader xmlReader ...

随机推荐

  1. 深入浅出的webpack4构建工具--webpack4+vue+vuex+mock模拟后台数据(十九)

    mock的官网文档 mock官网 关于mockjs的优点,官网这样描述它:1)可以前后端分离.2)增加单元测试的真实性(通过随机数据,模拟各种场景).3)开发无侵入(不需要修改既有代码,就可以拦截 A ...

  2. Python-2.7 : 编码问题及encode与decode

    普通的字符串在py2.7中都是以ASCII编码的,例如str=“abc”,若含有中文则会以gbk或者gb2312编码(GB2312是中国规定的汉字编码,也可以说是简体中文的字符集编码;GBK 是 GB ...

  3. linux安装sonar

    第一步 使用上一篇博客中下载的sonar6.7.6上传到centos7 准备 安装jdk1.8 解压unzip sonarqube-6.7.6.zip 由于elasticsearch需要非root用户 ...

  4. git速度太慢

    适用各种操作系统,本次测试于ubuntu,下载速度从二十几k提高到二百多k 1.查找域名对应的ip地址,并修改hosts文件 nslookup github.global.ssl.fastly.Net ...

  5. QT显示url图片

    QT 显示网络图片我目前的办法就是先下载下来 然后显示  如果有好的办法请相互交流一下 需要调用的头文件 #include <QNetworkAccessManager> #include ...

  6. 《大道至简》第一章j愚公移山ava伪代码

    <大道至简>第一章,将编程比作了愚公移山,完美的诠释了编程的整个过程.在两千年前的寓言中,愚公集项目组织者.团队经理.编程人员.技术分析师等众多角色于一身.首先是原始需求的产生:“惩山北之 ...

  7. Java:内省(Introspector)

    内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且 ...

  8. java读取写入文件

    先来看一下java写入文件 public static void readTxt(String value) throws IOException { FileWriter fw = null; tr ...

  9. python 取值方法:截取字符串

    截取最后三位:aa=“TFR20171230001-1”cc=aa[-3]+aa[-2]+aa[-1] aa="1.36x36.8-ddr" bb=aa.split('x')[1] ...

  10. UOJ219 NOI2016 优秀的拆分 二分、字符串哈希

    传送门 题目可以转化为求\(AA\)的数量,设\(cnt1_x\)表示左端点为\(x\)的\(AA\)的数量,\(cnt2_x\)表示右端点为\(x\)的\(AA\)的数量,那么答案就是\(\sum ...