用ASP.NET 实现对XML文件的增删改
2007-07-23 23:32
447 查看
用ASP.NET 实现对XML文件的增删改。
1
using System;
2
using System.Collections;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Web;
7
using System.Web.SessionState;
8
using System.Web.UI;
9
using System.Web.UI.WebControls;
10
using System.Web.UI.HtmlControls;
11
using System.Xml;
12
using System.Xml.XPath;
13
14
namespace OperateXML
15
{
16
/**//// <summary>
17
/// xdoc 的摘要说明。
18
/// </summary>
19
public class XML : System.Web.UI.Page
20
{
21
protected System.Web.UI.WebControls.Label Label1;
22
protected System.Web.UI.WebControls.Label Label2;
23
protected System.Web.UI.WebControls.Button Button1;
24
protected System.Web.UI.WebControls.Label Label3;
25
protected System.Web.UI.WebControls.Button Button2;
26
protected System.Web.UI.WebControls.Button Button3;
27
protected System.Web.UI.WebControls.DataGrid dg;
28
protected System.Web.UI.WebControls.DropDownList ddl;
29
protected System.Web.UI.WebControls.TextBox tbn;
30
protected System.Web.UI.WebControls.Label Label4;
31
protected System.Web.UI.WebControls.Label Label5;
32
protected System.Web.UI.WebControls.Label Label6;
33
protected System.Web.UI.WebControls.TextBox tbna;
34
protected System.Web.UI.WebControls.TextBox tbc;
35
protected System.Web.UI.WebControls.TextBox tbe;
36
protected System.Web.UI.WebControls.Button Button4;
37
38
private void Page_Load(object sender, System.EventArgs e)
39
{
40
if(!Page.IsPostBack)
41
{
42
fill();
43
}
44
}
45
46
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
47
override protected void OnInit(EventArgs e)
48
{
49
//
50
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
51
//
52
InitializeComponent();
53
base.OnInit(e);
54
}
55
56
/**//**//**//// <summary>
57
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
58
/// 此方法的内容。
59
/// </summary>
60
private void InitializeComponent()
61
{
62
this.Button1.Click += new System.EventHandler(this.Button1_Click);
63
this.Button2.Click += new System.EventHandler(this.Button2_Click);
64
this.Button3.Click += new System.EventHandler(this.Button3_Click);
65
this.Button4.Click += new System.EventHandler(this.Button4_Click);
66
this.Load += new System.EventHandler(this.Page_Load);
67
68
}
69
#endregion
70
71
绑定#region 绑定
72
73
private void fill()
74
{
75
DataSet ds=new DataSet();
76
ds.ReadXml(Server.MapPath("//OperateXML//doc.xml"));
77
dg.DataSource=ds.Tables[0];
78
dg.DataBind();
79
XmlDocument xd=new XmlDocument();
80
xd.Load(Server.MapPath("//OperateXML//doc.xml"));
81
System.Xml.XmlNodeList xnl=xd.GetElementsByTagName("Name");
82
ddl.Items.Clear();
83
for(int i=0;i<xnl.Count;i++)
84
{
85
ddl.Items.Add(xnl[i].InnerText);
86
}
87
}
88
89
#endregion
90
91
查询#region 查询
92
93
private void Button1_Click(object sender, System.EventArgs e)
94
{
95
XmlDocument xd=new XmlDocument();
96
xd.Load(Server.MapPath("//OperateXML//doc.xml"));
97
tbn.Text=xd.SelectSingleNode("//User[Name='"+ddl.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText.ToString();
98
99
}
100
101
#endregion
102
103
删除#region 删除
104
private void Button2_Click(object sender, System.EventArgs e)
105
{
106
XmlDocument xdoc=new XmlDocument();
107
xdoc.Load(Server.MapPath("//OperateXML//doc.xml"));
108
XmlNodeList xnl=xdoc.SelectSingleNode("dbGuest").ChildNodes;
109
110
foreach(XmlNode xn in xnl)
111
{
112
XmlElement xe=(XmlElement)xn;
113
XmlNodeList node=xe.GetElementsByTagName("Name");//查找他的Name行
114
if(node.Count>0)
115
{
116
if(node[0].InnerText==ddl.SelectedItem.Text)//如果当前节点的名字和下拉列表传来的一样,就删除
117
{
118
xe.RemoveAll();//删除节点的所有指定属性和子集,但是不删除默认属性,我很郁闷,不知道怎么连属性一起删除,如果有朋友知道,请一定告诉我下,谢谢了!
119
120
}
121
break;
122
}
123
124
}
125
xdoc.Save(Server.MapPath("//OperateXML//doc.xml"));
126
fill();
127
}
128
129
#endregion
130
131
添加#region 添加
132
133
private void Button3_Click(object sender, System.EventArgs e)
134
{
135
string name=this.tbna.Text.ToString();
136
string city=this.tbc.Text.ToString();
137
string email=this.tbe.Text.ToString();
138
139
XmlDocument xd=new XmlDocument();
140
xd.Load(Server.MapPath("//OperateXML//doc.xml"));
141
//查找dbGuest节点
142
XmlNode xn=xd.SelectSingleNode("dbGuest");
143
//创建user节点
144
XmlElement xe_u=xd.CreateElement("User");
145
//创建一个name元素
146
XmlElement xe_a1=xd.CreateElement("Name");
147
xe_a1.InnerText=name;//设置该元素的值
148
xe_u.AppendChild(xe_a1);//把刚才创建的元素插入name节点里面去
149
XmlElement xe_a2=xd.CreateElement("City");
150
xe_a2.InnerText=city;
151
xe_u.AppendChild(xe_a2);
152
XmlElement xe_a3=xd.CreateElement("Email");
153
xe_a3.InnerText=email;
154
xe_u.AppendChild(xe_a3);
155
XmlElement xe_a4=xd.CreateElement("Time");
156
xe_a4.InnerText=(DateTime.Now).ToString();
157
xe_u.AppendChild(xe_a4);
158
//将User节点插入到dbGuest
159
xn.AppendChild(xe_u);
160
//保存XML文件
161
xd.Save(Server.MapPath("//OperateXML//doc.xml"));
162
fill();
163
}
164
165
#endregion
166
167
修改邮件地址#region 修改邮件地址
168
169
private void Button4_Click(object sender, System.EventArgs e)
170
{//修改邮件地址
171
XmlDocument xd=new XmlDocument();
172
xd.Load(Server.MapPath("//OperateXML//doc.xml"));//载入XML文件
173
XmlNodeList xnl=xd.SelectSingleNode("dbGuest").ChildNodes;//获取dbGuest节点的全部子节点
174
foreach(XmlNode xn in xnl)//迭代所有子节点
175
{
176
XmlElement xe=(XmlElement)xn;//将迭代到的子节点转换成XmlElement类型
177
XmlNodeList xnl2=xe.GetElementsByTagName("Name");//返回所有Name列的数据
178
if(xnl2.Count>0)//如果大于零就表示有撒,
179
{
180
if(xnl2[0].InnerText==ddl.SelectedItem.Text)//如果该列有和被下拉列表中返回的值一样的数据的话
181
{
182
XmlNodeList xnl3=xe.ChildNodes;//再获取下面所有的子节点
183
foreach(XmlNode xn1 in xnl3)//再迭代子集
184
{
185
XmlElement xe2=(XmlElement)xn1;//转换类型
186
if(xe2.Name=="Email")//如果节点名字是Email的话
187
{
188
xe2.InnerText=tbn.Text;//该节点的值就替换成文本框中的
189
break;
190
}
191
}
192
break;
193
}
194
}
195
}
196
xd.Save(Server.MapPath("//OperateXML//doc.xml"));
197
fill();
198
}
199
200
#endregion
201
}
202
}
XML文件如下:
<?xml version="1.0" encoding="utf-8"?>
<dbGuest>
<User>
<Name>林文龙</Name>
<City>
</City>
<Email>
</Email>
<Time>2006-5-7 21:15:18</Time>
</User>
<User>
<Name>钟扬</Name>
<City>合肥</City>
<Email>
</Email>
<Time>2006-5-7 21:15:35</Time>
</User>
<User>
<Name>钟扬</Name>
<City>合肥</City>
<Email>
</Email>
<Time>2006-5-7 21:27:52</Time>
</User>
<User>
<Name>钟扬</Name>
<City>合肥</City>
<Email>
</Email>
<Time>2006-5-7 21:29:38</Time>
</User>
<User>
<Name>余智学</Name>
<City>重庆</City>
<Email>yuzhixue@163.com</Email>
<Time>2006-7-7 12:33:57</Time>
</User>
<User>
<Name>余智学</Name>
<City>重庆</City>
<Email>yuzhixue@163.com</Email>
<Time>2006-7-7 12:34:08</Time>
</User>
</dbGuest>
1
using System;
2
using System.Collections;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Web;
7
using System.Web.SessionState;
8
using System.Web.UI;
9
using System.Web.UI.WebControls;
10
using System.Web.UI.HtmlControls;
11
using System.Xml;
12
using System.Xml.XPath;
13
14
namespace OperateXML
15
{
16
/**//// <summary>
17
/// xdoc 的摘要说明。
18
/// </summary>
19
public class XML : System.Web.UI.Page
20
{
21
protected System.Web.UI.WebControls.Label Label1;
22
protected System.Web.UI.WebControls.Label Label2;
23
protected System.Web.UI.WebControls.Button Button1;
24
protected System.Web.UI.WebControls.Label Label3;
25
protected System.Web.UI.WebControls.Button Button2;
26
protected System.Web.UI.WebControls.Button Button3;
27
protected System.Web.UI.WebControls.DataGrid dg;
28
protected System.Web.UI.WebControls.DropDownList ddl;
29
protected System.Web.UI.WebControls.TextBox tbn;
30
protected System.Web.UI.WebControls.Label Label4;
31
protected System.Web.UI.WebControls.Label Label5;
32
protected System.Web.UI.WebControls.Label Label6;
33
protected System.Web.UI.WebControls.TextBox tbna;
34
protected System.Web.UI.WebControls.TextBox tbc;
35
protected System.Web.UI.WebControls.TextBox tbe;
36
protected System.Web.UI.WebControls.Button Button4;
37
38
private void Page_Load(object sender, System.EventArgs e)
39
{
40
if(!Page.IsPostBack)
41
{
42
fill();
43
}
44
}
45
46
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
47
override protected void OnInit(EventArgs e)
48
{
49
//
50
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
51
//
52
InitializeComponent();
53
base.OnInit(e);
54
}
55
56
/**//**//**//// <summary>
57
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
58
/// 此方法的内容。
59
/// </summary>
60
private void InitializeComponent()
61
{
62
this.Button1.Click += new System.EventHandler(this.Button1_Click);
63
this.Button2.Click += new System.EventHandler(this.Button2_Click);
64
this.Button3.Click += new System.EventHandler(this.Button3_Click);
65
this.Button4.Click += new System.EventHandler(this.Button4_Click);
66
this.Load += new System.EventHandler(this.Page_Load);
67
68
}
69
#endregion
70
71
绑定#region 绑定
72
73
private void fill()
74
{
75
DataSet ds=new DataSet();
76
ds.ReadXml(Server.MapPath("//OperateXML//doc.xml"));
77
dg.DataSource=ds.Tables[0];
78
dg.DataBind();
79
XmlDocument xd=new XmlDocument();
80
xd.Load(Server.MapPath("//OperateXML//doc.xml"));
81
System.Xml.XmlNodeList xnl=xd.GetElementsByTagName("Name");
82
ddl.Items.Clear();
83
for(int i=0;i<xnl.Count;i++)
84
{
85
ddl.Items.Add(xnl[i].InnerText);
86
}
87
}
88
89
#endregion
90
91
查询#region 查询
92
93
private void Button1_Click(object sender, System.EventArgs e)
94
{
95
XmlDocument xd=new XmlDocument();
96
xd.Load(Server.MapPath("//OperateXML//doc.xml"));
97
tbn.Text=xd.SelectSingleNode("//User[Name='"+ddl.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText.ToString();
98
99
}
100
101
#endregion
102
103
删除#region 删除
104
private void Button2_Click(object sender, System.EventArgs e)
105
{
106
XmlDocument xdoc=new XmlDocument();
107
xdoc.Load(Server.MapPath("//OperateXML//doc.xml"));
108
XmlNodeList xnl=xdoc.SelectSingleNode("dbGuest").ChildNodes;
109
110
foreach(XmlNode xn in xnl)
111
{
112
XmlElement xe=(XmlElement)xn;
113
XmlNodeList node=xe.GetElementsByTagName("Name");//查找他的Name行
114
if(node.Count>0)
115
{
116
if(node[0].InnerText==ddl.SelectedItem.Text)//如果当前节点的名字和下拉列表传来的一样,就删除
117
{
118
xe.RemoveAll();//删除节点的所有指定属性和子集,但是不删除默认属性,我很郁闷,不知道怎么连属性一起删除,如果有朋友知道,请一定告诉我下,谢谢了!
119
120
}
121
break;
122
}
123
124
}
125
xdoc.Save(Server.MapPath("//OperateXML//doc.xml"));
126
fill();
127
}
128
129
#endregion
130
131
添加#region 添加
132
133
private void Button3_Click(object sender, System.EventArgs e)
134
{
135
string name=this.tbna.Text.ToString();
136
string city=this.tbc.Text.ToString();
137
string email=this.tbe.Text.ToString();
138
139
XmlDocument xd=new XmlDocument();
140
xd.Load(Server.MapPath("//OperateXML//doc.xml"));
141
//查找dbGuest节点
142
XmlNode xn=xd.SelectSingleNode("dbGuest");
143
//创建user节点
144
XmlElement xe_u=xd.CreateElement("User");
145
//创建一个name元素
146
XmlElement xe_a1=xd.CreateElement("Name");
147
xe_a1.InnerText=name;//设置该元素的值
148
xe_u.AppendChild(xe_a1);//把刚才创建的元素插入name节点里面去
149
XmlElement xe_a2=xd.CreateElement("City");
150
xe_a2.InnerText=city;
151
xe_u.AppendChild(xe_a2);
152
XmlElement xe_a3=xd.CreateElement("Email");
153
xe_a3.InnerText=email;
154
xe_u.AppendChild(xe_a3);
155
XmlElement xe_a4=xd.CreateElement("Time");
156
xe_a4.InnerText=(DateTime.Now).ToString();
157
xe_u.AppendChild(xe_a4);
158
//将User节点插入到dbGuest
159
xn.AppendChild(xe_u);
160
//保存XML文件
161
xd.Save(Server.MapPath("//OperateXML//doc.xml"));
162
fill();
163
}
164
165
#endregion
166
167
修改邮件地址#region 修改邮件地址
168
169
private void Button4_Click(object sender, System.EventArgs e)
170
{//修改邮件地址
171
XmlDocument xd=new XmlDocument();
172
xd.Load(Server.MapPath("//OperateXML//doc.xml"));//载入XML文件
173
XmlNodeList xnl=xd.SelectSingleNode("dbGuest").ChildNodes;//获取dbGuest节点的全部子节点
174
foreach(XmlNode xn in xnl)//迭代所有子节点
175
{
176
XmlElement xe=(XmlElement)xn;//将迭代到的子节点转换成XmlElement类型
177
XmlNodeList xnl2=xe.GetElementsByTagName("Name");//返回所有Name列的数据
178
if(xnl2.Count>0)//如果大于零就表示有撒,
179
{
180
if(xnl2[0].InnerText==ddl.SelectedItem.Text)//如果该列有和被下拉列表中返回的值一样的数据的话
181
{
182
XmlNodeList xnl3=xe.ChildNodes;//再获取下面所有的子节点
183
foreach(XmlNode xn1 in xnl3)//再迭代子集
184
{
185
XmlElement xe2=(XmlElement)xn1;//转换类型
186
if(xe2.Name=="Email")//如果节点名字是Email的话
187
{
188
xe2.InnerText=tbn.Text;//该节点的值就替换成文本框中的
189
break;
190
}
191
}
192
break;
193
}
194
}
195
}
196
xd.Save(Server.MapPath("//OperateXML//doc.xml"));
197
fill();
198
}
199
200
#endregion
201
}
202
}
XML文件如下:
<?xml version="1.0" encoding="utf-8"?>
<dbGuest>
<User>
<Name>林文龙</Name>
<City>
</City>
<Email>
</Email>
<Time>2006-5-7 21:15:18</Time>
</User>
<User>
<Name>钟扬</Name>
<City>合肥</City>
<Email>
</Email>
<Time>2006-5-7 21:15:35</Time>
</User>
<User>
<Name>钟扬</Name>
<City>合肥</City>
<Email>
</Email>
<Time>2006-5-7 21:27:52</Time>
</User>
<User>
<Name>钟扬</Name>
<City>合肥</City>
<Email>
</Email>
<Time>2006-5-7 21:29:38</Time>
</User>
<User>
<Name>余智学</Name>
<City>重庆</City>
<Email>yuzhixue@163.com</Email>
<Time>2006-7-7 12:33:57</Time>
</User>
<User>
<Name>余智学</Name>
<City>重庆</City>
<Email>yuzhixue@163.com</Email>
<Time>2006-7-7 12:34:08</Time>
</User>
</dbGuest>
相关文章推荐
- visual studio中 用ASP.NET实现 增删改功能实现常见异常及处理
- asp.net 实现对xml文件的 读取,添加,删除,修改
- asp.net 实现对xml文件的 读取,添加,删除,修改
- ASP.NET Gridview数据库绑定支持增删改,记得要完整实现
- asp.net XML文件操作实现代码
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
- asp.net 实现对xml文件的 读取,添加,删除,修改
- asp.net 动态数据网站简单应用,快速建立站点实现对库方便的增删改
- asp.net中XML文件作为中间件进行数据交换功能的实现(c#,sql2000)
- asp.net中XML文件作为中间件进行数据交换功能的实现(c#,sql2000)
- Asp.net中XML文件作为中间件进行数据交换功能的实现(c#,sql2000)
- asp.net中使用DatagridView的增删改方法具体实现
- asp.net中使用DatagridView的增删改方法具体实现
- ASP.NET中利用Repeater实现增删改操作
- asp.net MVC实现Fullcalendar增删改的功能遇到的问题(包括datetimepicker冲突)
- 在ASP.NET中实现如何下载txt及xml文件的方法
- asp.net实现XML文件读取数据绑定到DropDownList的方法
- asp.net中XML文件作为中间件进行数据交换功能的实现(c#,sql2000)
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(六):Extjs Grid,Window,Form实现增删改操作
- ASP.NET菜鸟之路之实现新闻列表增删改