zoukankan
html css js c++ java
C# 操作 XML 增 删 改 查
xml文件格式
<?
xml version="1.0"
?>
<
dbGuest
>
<
User
>
<
Name
uid
="d"
>
ew
</
Name
>
<
City
>
dsa
</
City
>
<
Email
>
eq
</
Email
>
</
User
>
</
dbGuest
>
操作方式
//
创建XML文件
private
void
btnCreateXml_Click(
object
sender, System.EventArgs e)
{
//
创建XML文档对象
System.Xml.XmlDocument xmldoc
=
new
System.Xml.XmlDocument();
//
创建xml 声明节点
System.Xml.XmlNode xmlnode
=
xmldoc.CreateNode(System.Xml.XmlNodeType.XmlDeclaration,
""
,
""
);
//
添加上述创建和 xml声明节点
xmldoc.AppendChild(xmlnode);
//
创建xml dbGuest 元素(根节点)
System.Xml.XmlElement xmlelem
=
xmldoc.CreateElement(
""
,
"
dbGuest
"
,
""
);
xmldoc.AppendChild(xmlelem);
try
{
xmldoc.Save(xmlFile);
}
catch
(Exception ex)
{
if
(ex.Message.IndexOf(
"
访问被拒绝
"
)
!=
-
1
)
{
lblMsg.Text
=
"
创建xml文档失败,没有写入权限,请检查xmldocs文件夹的写入权限!
"
;
return
;
}
}
lblMsg.Text
=
"
xml文件创建成功
"
;
BindXMLFiles();
GetXmlContent();
BindUserNames();
}
//
添加用户
private
void
btnAdd_Click(
object
sender, System.EventArgs e)
{
string
uID
=
txtUID.Text;
string
userName
=
txtUserName.Text;
string
City
=
txtCity.Text;
string
Email
=
txtEmail.Text;
if
(
!
System.IO.File.Exists(xmlFile))
{
lblMsg.Text
=
"
xml文件
"
+
xmlFile
+
"
不存在,请先点击创建!
"
;
return
;
}
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load(xmlFile);
//
加载文件
XmlNode root
=
xmlDoc.SelectSingleNode(
"
dbGuest
"
);
//
查找<dbGuest>
XmlElement xe_dbGuest_User
=
xmlDoc.CreateElement(
"
User
"
);
//
创建一个<User>节点
XmlElement xe_dbGuest_User_Name
=
xmlDoc.CreateElement(
"
Name
"
);
xe_dbGuest_User_Name.InnerText
=
userName;
//
设置文本节点
XmlAttribute a
=
xmlDoc.CreateAttribute(
"
uid
"
);
//
创建一个 属性
a.Value
=
uID;
xe_dbGuest_User_Name.Attributes.Append(a);
//
增加一个属性
xe_dbGuest_User.AppendChild(xe_dbGuest_User_Name);
//
添加到<User>节点中
XmlElement xe_dbGuest_User_City
=
xmlDoc.CreateElement(
"
City
"
);
//
创建City节点
xe_dbGuest_User_City.InnerText
=
City;
xe_dbGuest_User.AppendChild(xe_dbGuest_User_City);
//
添加到<User>节点中
XmlElement xe_dbGuest_User_Email
=
xmlDoc.CreateElement(
"
Email
"
);
//
创建Email节点
xe_dbGuest_User_Email.InnerText
=
Email;
xe_dbGuest_User.AppendChild(xe_dbGuest_User_Email);
root.AppendChild(xe_dbGuest_User);
//
添加到<dbGuest>节点中
xmlDoc.Save(xmlFile);
//
保存文件
lblMsg.Text
=
"
成功添加用户
"
;
GetXmlContent();
BindXML();
BindUserNames();
}
//
绑定xml数据
private
void
BindXML()
{
if
(
!
System.IO.File.Exists(xmlFile))
{
lblMsg.Text
=
"
xml文件
"
+
xmlFile
+
"
不存在,请先点击创建!
"
;
return
;
}
//
方法一:通过ds 读取 xml
//
DataSet ds = new DataSet();
//
ds.ReadXml(xmlFile);
//
if(ds.Tables.Count > 0)
//
{
//
dgValue.DataSource = ds.Tables[0].DefaultView;
//
dgValue.DataBind();
//
}
//
方法二
DataTable dt
=
new
DataTable();
DataColumn dc
=
new
DataColumn(
"
uid
"
);
dt.Columns.Add(dc);
dc
=
new
DataColumn(
"
name
"
);
dt.Columns.Add(dc);
dc
=
new
DataColumn(
"
city
"
);
dt.Columns.Add(dc);
dc
=
new
DataColumn(
"
email
"
);
dt.Columns.Add(dc);
//
将xml文件加载成xmlDoc
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load(xmlFile);
//
得到dbGust所有子节点
XmlNodeList xnl
=
xmlDoc.SelectSingleNode(
"
dbGuest
"
).ChildNodes;
for
(
int
i
=
0
; i
<
xnl.Count;i
++
)
{
//
在每个子节点是遍历 xn 代表的是一个个User
string
uid
=
xnl.Item(i).ChildNodes[
0
].Attributes[
"
uid
"
].Value;
string
name
=
xnl.Item(i).ChildNodes[
0
].InnerText;
string
city
=
xnl.Item(i).ChildNodes[
1
].InnerText;
string
email
=
xnl.Item(i).ChildNodes[
2
].InnerText;
DataRow dr
=
dt.NewRow();
dr[
0
]
=
uid;
dr[
1
]
=
name;
dr[
2
]
=
city;
dr[
3
]
=
email;
dt.Rows.Add(dr);
}
dgValue.DataSource
=
dt;
dgValue.DataBind();
}
//
删除用户
private
void
btnDelete_Click(
object
sender, System.EventArgs e)
{
string
selectName
=
ddlNames.SelectedItem.Text;
string
selectID
=
ddlNames.SelectedValue;
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load(xmlFile);
XmlNodeList xnl
=
xmlDoc.SelectSingleNode(
"
dbGuest
"
).ChildNodes;
for
(
int
i
=
0
; i
<
xnl.Count ; i
++
)
{
XmlElement xe
=
(XmlElement)xnl[i];
//
第i个dbGust子节点
XmlNodeList node
=
xe.GetElementsByTagName(
"
Name
"
);
if
(node.Count
>
0
)
{
//
判断为用户选择的
if
(node[
0
].InnerText
==
selectName
&&
node[
0
].Attributes[
"
uid
"
].Value
==
selectID)
{
string
m
=
node[
0
].InnerText;
xmlDoc.SelectSingleNode(
"
dbGuest
"
).RemoveChild(node[
0
].ParentNode);
//
删除该User节点
//
xe.RemoveAll();
//
删除该节点的全部内容 这二种有差别
break
;
}
}
}
xmlDoc.Save(xmlFile);
BindXML();
GetXmlContent();
BindUserNames();
}
//
更新用户
private
void
btnUpdate_Click(
object
sender, System.EventArgs e)
{
string
selectName
=
ddlNames.SelectedItem.Text;
string
selectID
=
ddlNames.SelectedValue;
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load(xmlFile);
XmlNodeList nodeList
=
xmlDoc.SelectSingleNode(
"
dbGuest
"
).ChildNodes;
//
获取dbGuest节点的所有子节点
foreach
(XmlNode xn
in
nodeList)
//
遍历所有子节点
{
XmlElement xe
=
(XmlElement)xn;
//
将子节点类型转换为XmlElement类型
XmlNodeList node
=
xe.GetElementsByTagName(
"
Name
"
);
if
(node.Count
>
0
)
{
//
判断为用户选择的
if
(node[
0
].InnerText
==
selectName
&&
node[
0
].Attributes[
"
uid
"
].Value
==
selectID)
{
XmlNodeList nls
=
xe.ChildNodes;
//
继续获取xe子节点的所有子节点
foreach
(XmlNode xn1
in
nls)
//
遍历
{
XmlElement xe2
=
(XmlElement)xn1;
//
转换类型
if
(xe2.Name
==
"
Email
"
)
//
如果找到Email属性
{
xe2.InnerText
=
"
http://eflylab.cnblogs.com
"
;
//
则修改
break
;
//
找到退出来就可以了
}
}
break
;
}
}
}
xmlDoc.Save(xmlFile);
BindXML();
GetXmlContent();
}
//
查询
private
void
btnSelect_Click(
object
sender, System.EventArgs e)
{
XmlDocument doc
=
new
XmlDocument();
doc.Load(xmlFile);
string
selectName
=
ddlNames.SelectedItem.Text;
string
email
=
doc.SelectSingleNode(
"
//User[Name='
"
+
selectName
+
"
']
"
).ChildNodes.Item(
2
).InnerText;
lblMsg.Text
=
"
查询
"
+
selectName
+
"
用户email为
"
+
email;
}
下载本示例
查看全文
相关阅读:
windows下使用curl命令,以及常用curl命令
使用 C# 下载文件的十八般武艺
初闻不知曲中意,再听已是曲中人
从线性回归走进机器学习
自定义Vue&Element组件,实现用户选择和显示
ARP协议原理——地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址,ARP整个完整交互过程仅需要两个包,一问一答即可搞定
SSH加密隧道流量攻击与检测技术——这玩意和思科加密流量检测没有本质区别啊,可借鉴CNN图像
bt2——基于telegram的C2
通过gmail进行C2控制——看了下源码,本质上和dropbox c2架构一样,都是去轮训邮件,将c2攻击的东西以邮件形式发送,结果也发到邮箱里
DropboxC2 工具原理总结——就是通过dropbox文件来间接做c2控制和交互。
原文地址:https://www.cnblogs.com/eflylab/p/1242982.html
最新文章
[LeetCode] 1207. Unique Number of Occurrences 独一无二的出现次数
[LeetCode] 1206. Design Skiplist 设计跳跃链表
[LeetCode] 1203. Sort Items by Groups Respecting Dependencies 项目管理
[LeetCode] 1202. Smallest String With Swaps 交换字符串中的元素
[LeetCode] 1201. Ugly Number III 丑陋数之三
[LeetCode] 1200. Minimum Absolute Difference 最小绝对差
[LeetCode] 1192. Critical Connections in a Network 查找集群内的关键连接
支付系统-概念与架构
keycloak~使用JDBC_PING实现k8s里的高可用
keycloak~为认证提供者添加配置项
热门文章
Redis主从配置总结
批处理如何判断路径是文件,还是文件夹
快速删除C#项目中的bin和obj文件夹的方法
将 .NET Framework 项目转换为 .NET Standard 项目
编译原理之手写Pascal解释器 ---- 系列文章
51单片机开发 ---- 系列文章
程序员作图工具和技巧,你 get 了么?
如何优化 MySQL 语句
开源百宝箱 ---- 开源项目推荐
SQL 查询的一般执行顺序,并不是从 SELECT 开始的
Copyright © 2011-2022 走看看