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;
}
下载本示例
查看全文
相关阅读:
ThinkPHP 5 中AJAX跨域请求头设置方法【转】
phpstorm激活大全【转】
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function【转】
php的dirname(__FILE__)和dirname(dirname(__FILE__))使用总结【转】
php 设置临时内存和超时设置脚本最大执行时间
mysql 实现表连接(左,右,内,全连接)【转】
Maximum execution time of 30 seconds exceeded解决办法【转】
常用邮箱SMTP服务器地址大全
叉积(POJ
乘法逆元(P3811)(四种方法)
原文地址:https://www.cnblogs.com/eflylab/p/1242982.html
最新文章
2019 年容器生态统计报告发布 | 云原生生态周报 Vol. 26
从函数计算架构看 Serverless 的演进与思考
云原生存储和云存储有什么区别?
面向云原生的混沌工程工具-ChaosBlade
阿里云和微软共同开源的 OAM 对 Kubernetes 开发人员意味着什么?
阿里巴巴 Kubernetes 应用管理实践中的经验与教训
Knative 实战:如何在 Knative 中配置自定义域名及路由规则
Canonical 开源 MicroK8 | 云原生生态周报 Vol. 25
1286. Iterator for Combination
1287. Element Appearing More Than 25% In Sorted Array
热门文章
875. Koko Eating Bananas
1011. Capacity To Ship Packages Within D Days
1283. Find the Smallest Divisor Given a Threshold
1282. Group the People Given the Group Size They Belong To
1281. Subtract the Product and Sum of Digits of an Integer
509. Fibonacci Number
507. Perfect Number
1277. Count Square Submatrices with All Ones
PHP实现用户注册后邮箱验证,激活帐号【转】
Can't use Subversion command line client:svn【转】
Copyright © 2011-2022 走看看