您的位置:首页 > 编程语言 > ASP

用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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐