命名空間: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. Mac下安装Mongodb

    Mac下安装Mongodb 一: 安装MongoDB: Mac下安装MongoDB有两种方法,第一种是通过源码安装,另一种是使用 homebrew, 下面我使用homebrew来安装,首先我们需要安装 ...

  3. 控制input输入框光标的位置

    一:理解input, textarea元素在标准浏览器下两个属性selectionStart, selectionEnd. selectionStart: 该属性的含义是 选区开始的位置: selec ...

  4. 编写简单Linux内核模块

    模块代码如下 //main.c #include <linux/kernel.h> #include <linux/module.h> #include <linux/i ...

  5. Android学习之键盘事件

    java代码: package com.example.keyboardtest; import android.app.Activity; import android.os.Bundle; imp ...

  6. Oracle 把查询的多个字段赋值给多个变量

    select f1,f2,f3 into v1,v2,v3 from tab1

  7. 读取Excel的记录并导入SQL数据库

    准备一下,近段时间,需要把Excel的数据导入数据库中. 引用命名空间: using System.Configuration; using System.Data; using System.Dat ...

  8. 学习angularjs的ng-hide和ng-disabled

    一,页面上有一个checkbox和一个文本框.切换checkbox能对文本框输入文本与否: <input type="checkbox" ng-model="ckS ...

  9. JSON WEB TOKEN,简单谈谈TOKEN的使用及在C#中的实现

    十年河东,十年河西,莫欺少年穷. 学无止境,精益求精. 突然发现整个十月份自己还没有写一篇博客......哎,说出来都是泪啊,最近加班实在实在实在是太多了,真的没有多余的时间写博客.这不,今天也在加班 ...

  10. 2018 Multi-University Training Contest 1 部分简单题解析

    Preface ACM系列赛第一站,没有进前200还是很伤的. 主要是T2当时没写出来就GG了,后来看了下其实不是很难. 题目按照比赛时我们A的顺序讲,其实我都是被陈潇然大佬和ZWC带飞的. T1 M ...