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下ftp安装配置及三种用户的验证
一.原理简介 二.安装配置 三.三种用户的验证 一.简介 FTP即文件传输协议(File Transfer Protocol),完成各主机的文件共享功能,基于客户端-服务器的协议,工作在应用层,tcp ...
- [10] AOP的注解配置
1.关于配置文件 首先在因为要使用到扫描功能,所以xml的头文件中除了引入bean和aop之外,还要引入context才行: <?xml version="1.0" enco ...
- 虚拟机vbox
https://www.virtualbox.org/wiki/Linux_Downloads 一直在报内核出错的问题,我尝试了各种方法还是无果,猜测是版本的问题,这里推荐各位安装virtualbox ...
- RDLC报表显示存储于数据库的图片
图片以二进制存储于数据库表中.在显示RDLC报表时,把图片呈现出来. 好吧. 把存储过程写好: CREATE PROCEDURE [dbo].[usp_File_Select] AS SELECT [ ...
- vue2.0中使用less
第一部分:Less语言 与上一篇<vue2.0中使用sass>介绍的Sass语言一样,Less语言也是一种CSS的扩展语言,增加了变量.混合(minin).函数等功能,让CSS更易维护.方 ...
- 【强化学习】python 实现 saras 例一
本文作者:hhh5460 本文地址:https://www.cnblogs.com/hhh5460/p/10146554.html 说明:将之前 q-learning 实现的例一,用 saras 重新 ...
- [朴智妍][Lullaby]
歌词来源:http://music.163.com/#/song?id=484056971 作曲 : Bum/Sophiya/김용신 [作曲 : Bum/Sophiya/k/gi-myong-xin] ...
- Nginx 403 Forbidden 解决方案 史上最靠谱
原因 1. SELinux为开启状态(enabled) 查看SELinux的状态 sestatus 如果不是 disables , 需要 vi /etc/selinux/config 将以前的 SEL ...
- iptables限制连接数(如sftp) 以及 谨防CC/DDOS攻击的配置 ( connlimit模块)
之前在公司服务器上部署了sftp,用于上传业务系统的附件.后来由于程序连接问题,使的sftp连接数过多(最多时高达400多个sftp连接数),因为急需要对sftp的连接数做严格限制.操作记录如下: 启 ...
- mysql执行 sql文件遇到USING BTREE ) ENGINE=MyISAM DEFAULT CHARSET=utf8错误
使用navcat在导入别人发的mysql数据的时候,报了下面这个错误: [Err] 1064 - You have an error in your SQL syntax; check the man ...