读写xml(C#例子,asp.net)
aspx页面
<%@ Page language="c#" Codebehind="xdoc.aspx.cs" AutoEventWireup="false" Inherits="XML.xdoc" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>xdoc</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:datagrid id="dg" style="Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP:
56px" runat="server"
ForeColor="Black" BorderStyle="None" BorderWidth="1px" BorderColor="#DEDFDE"
BackColor="White"
CellPadding="4" GridLines="Vertical" AutoGenerateColumns="False"
Width="432px">
<SelectedItemStyle Font-Bold="True" ForeColor="White"
BackColor="#CE5D5A"></SelectedItemStyle>
<AlternatingItemStyle BackColor="White"></AlternatingItemStyle>
<ItemStyle BackColor="#F7F7DE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White"
BackColor="#6B696B"></HeaderStyle>
<FooterStyle BackColor="#CCCC99"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="name" HeaderText="名字"></asp:BoundColumn>
<asp:BoundColumn DataField="City" HeaderText="城市"></asp:BoundColumn>
<asp:BoundColumn DataField="Email" HeaderText="邮件地
址"></asp:BoundColumn>
<asp:BoundColumn DataField="Time" HeaderText="时间"></asp:BoundColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#F7F7DE"
Mode="NumericPages"></PagerStyle>
</asp:datagrid><asp:label id="Label1" style="Z-INDEX: 102; LEFT: 112px; POSITION:
absolute; TOP: 8px" runat="server"
Width="336px" BorderWidth="2px" BorderStyle="Ridge" Font-Size="X-Large" Font
-Bold="True" ForeColor="Red">XmlDocument类的挖掘</asp:label><asp:dropdownlist id="ddl" style="Z-
INDEX: 103; LEFT: 128px; POSITION: absolute; TOP: 280px"
runat="server"></asp:dropdownlist><asp:label id="Label2" style="Z-INDEX: 104; LEFT: 64px;
POSITION: absolute; TOP: 280px" runat="server">姓名:</asp:label><asp:button id="Button1"
style="Z-INDEX: 105; LEFT: 64px; POSITION: absolute; TOP: 328px" runat="server"
Width="64px" Text="查询"></asp:button><asp:label id="Label3" style="Z-INDEX:
106; LEFT: 64px; POSITION: absolute; TOP: 384px" runat="server">邮件地址:</asp:label><asp:button
id="Button2" style="Z-INDEX: 107; LEFT: 152px; POSITION: absolute; TOP: 328px" runat="server"
Width="64px" Text="删除"></asp:button><asp:button id="Button3" style="Z-
INDEX: 108; LEFT: 432px; POSITION: absolute; TOP: 280px" runat="server"
Width="56px" Text="添加" Height="80px"></asp:button><asp:textbox id="tbn"
style="Z-INDEX: 109; LEFT: 152px; POSITION: absolute; TOP: 384px" runat="server"
Width="328px"></asp:textbox><asp:button id="Button4" style="Z-INDEX: 110;
LEFT: 64px; POSITION: absolute; TOP: 416px" runat="server"
Width="424px" Text="修改邮件地址"></asp:button>
<asp:TextBox id="tbna" style="Z-INDEX: 111; LEFT: 312px; POSITION: absolute; TOP:
280px" runat="server"
Width="104px"></asp:TextBox>
<asp:TextBox id="tbc" style="Z-INDEX: 112; LEFT: 312px; POSITION: absolute; TOP:
312px" runat="server"
Width="104px" Height="24px"></asp:TextBox>
<asp:TextBox id="tbe" style="Z-INDEX: 113; LEFT: 312px; POSITION: absolute; TOP:
344px" runat="server"
Width="104px" Height="24px"></asp:TextBox>
<asp:Label id="Label4" style="Z-INDEX: 114; LEFT: 264px; POSITION: absolute; TOP:
280px" runat="server">姓名:</asp:Label>
<asp:Label id="Label5" style="Z-INDEX: 115; LEFT: 264px; POSITION: absolute; TOP:
312px" runat="server">城市:</asp:Label>
<asp:Label id="Label6" style="Z-INDEX: 116; LEFT: 264px; POSITION: absolute; TOP:
344px" runat="server">Email:</asp:Label></FONT></form>
</body>
</HTML>
cs文件
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
//新引入两个命名空间
using System.Xml;
using System.Xml.XPath;
namespace XML
{
/**//// <summary>
/// xdoc 的摘要说明。
/// </summary>
public class xdoc : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.Button Button3;
protected System.Web.UI.WebControls.DataGrid dg;
protected System.Web.UI.WebControls.DropDownList ddl;
protected System.Web.UI.WebControls.TextBox tbn;
protected System.Web.UI.WebControls.Label Label4;
protected System.Web.UI.WebControls.Label Label5;
protected System.Web.UI.WebControls.Label Label6;
protected System.Web.UI.WebControls.TextBox tbna;
protected System.Web.UI.WebControls.TextBox tbc;
protected System.Web.UI.WebControls.TextBox tbe;
protected System.Web.UI.WebControls.Button Button4;
private void Page_Load(object sender, System.EventArgs e)
{//看动作名字就知道了是载入了
if(!Page.IsPostBack)
{
fill();
}
}
//Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Button3.Click += new System.EventHandler(this.Button3_Click);
this.Button4.Click += new System.EventHandler(this.Button4_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
private void fill()
{//绑定方法
DataSet ds=new DataSet();
ds.ReadXml(Server.MapPath("\\xml\\xml\\doc.xml"));
dg.DataSource=ds.Tables[0];
dg.DataBind();
XmlDocument xd=new XmlDocument();
xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
System.Xml.XmlNodeList xnl=xd.GetElementsByTagName("Name");
ddl.Items.Clear();
for(int i=0;i<xnl.Count;i++)
{
ddl.Items.Add(xnl[i].InnerText);
}
}
private void Button1_Click(object sender, System.EventArgs e)
{//查询动作
XmlDocument xd=new XmlDocument();
xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
tbn.Text=xd.SelectSingleNode("//User
[Name='"+ddl.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText.ToString();
}
private void Button2_Click(object sender, System.EventArgs e)
{//删除动作
XmlDocument xdoc=new XmlDocument();
xdoc.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
XmlNodeList xnl=xdoc.SelectSingleNode("dbGuest").ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
XmlNodeList node=xe.GetElementsByTagName("Name");//查找他的Name行
if(node.Count>0)
{
if(node[0].InnerText==ddl.SelectedItem.Text)//如果当前节点的名字和下拉列表传
来的一样,就删除
{
xe.RemoveAll();//111
}
break;
}
}
xdoc.Save(Server.MapPath("\\xml\\xml\\doc.xml"));
fill();
}
private void Button3_Click(object sender, System.EventArgs e)
{//添加动作
string name=this.tbna.Text.ToString();
string city=this.tbc.Text.ToString();
string email=this.tbe.Text.ToString();
XmlDocument xd=new XmlDocument();
xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
//查找dbGuest节点
XmlNode xn=xd.SelectSingleNode("dbGuest");
//创建user节点
XmlElement xe_u=xd.CreateElement("User");
//创建一个name元素
XmlElement xe_a1=xd.CreateElement("Name");
xe_a1.InnerText=name;//设置该元素的值
xe_u.AppendChild(xe_a1);//把刚才创建的元素插入name节点里面去
XmlElement xe_a2=xd.CreateElement("City");
xe_a2.InnerText=city;
xe_u.AppendChild(xe_a2);
XmlElement xe_a3=xd.CreateElement("Email");
xe_a3.InnerText=email;
xe_u.AppendChild(xe_a3);
XmlElement xe_a4=xd.CreateElement("Time");
xe_a4.InnerText=(DateTime.Now).ToString();
xe_u.AppendChild(xe_a4);
//将User节点插入到dbGuest
xn.AppendChild(xe_u);
//保存XML文件
xd.Save(Server.MapPath("\\xml\\xml\\doc.xml"));
fill();
}
private void Button4_Click(object sender, System.EventArgs e)
{//修改邮件地址动作
XmlDocument xd=new XmlDocument();
xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));//载入XML文件
XmlNodeList xnl=xd.SelectSingleNode("dbGuest").ChildNodes;//获取dbGuest节点的全部子节
点
foreach(XmlNode xn in xnl)//迭代所有子节点
{
XmlElement xe=(XmlElement)xn;//将迭代到的子节点转换成XmlElement类型
XmlNodeList xnl2=xe.GetElementsByTagName("Name");//返回所有Name列的数据
if(xnl2.Count>0)//如果大于零就表示有撒,
{
if(xnl2[0].InnerText==ddl.SelectedItem.Text)//如果该列有和被下拉列表中返回的
值一样的数据的话
{
XmlNodeList xnl3=xe.ChildNodes;//再获取下面所有的子节点
foreach(XmlNode xn1 in xnl3)//再迭代子集
{
XmlElement xe2=(XmlElement)xn1;//转换类型
if(xe2.Name=="Email")//如果节点名字是Email的话
{
xe2.InnerText=tbn.Text;//该节点的值就替换成文本框中的
break;
}
}
break;
}
}
}
xd.Save(Server.MapPath("\\xml\\xml\\doc.xml"));
fill();
}
}
}
xml文件
<?xml version="1.0" encoding="utf-8"?>
<dbGuest>
<User>
<Name>天轰穿</Name>
<City>江油</City>
<Email>7665@fds.com</Email>
<Time>2006-5-6 16:10:56</Time>
</User>
<User>
<Name>田洪川</Name>
<City>绵阳</City>
<Email>th@DFs.com</Email>
<Time>2006-5-6 16:06:51</Time>
</User>
<User>
<Name>黄小梅</Name>
<City>南充</City>
<Email>5543@ds.com</Email>
<Time>2006-5-6 16:07:15</Time>
</User>
</dbGuest>
<%@ Page language="c#" Codebehind="xdoc.aspx.cs" AutoEventWireup="false" Inherits="XML.xdoc" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>xdoc</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:datagrid id="dg" style="Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP:
56px" runat="server"
ForeColor="Black" BorderStyle="None" BorderWidth="1px" BorderColor="#DEDFDE"
BackColor="White"
CellPadding="4" GridLines="Vertical" AutoGenerateColumns="False"
Width="432px">
<SelectedItemStyle Font-Bold="True" ForeColor="White"
BackColor="#CE5D5A"></SelectedItemStyle>
<AlternatingItemStyle BackColor="White"></AlternatingItemStyle>
<ItemStyle BackColor="#F7F7DE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White"
BackColor="#6B696B"></HeaderStyle>
<FooterStyle BackColor="#CCCC99"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="name" HeaderText="名字"></asp:BoundColumn>
<asp:BoundColumn DataField="City" HeaderText="城市"></asp:BoundColumn>
<asp:BoundColumn DataField="Email" HeaderText="邮件地
址"></asp:BoundColumn>
<asp:BoundColumn DataField="Time" HeaderText="时间"></asp:BoundColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#F7F7DE"
Mode="NumericPages"></PagerStyle>
</asp:datagrid><asp:label id="Label1" style="Z-INDEX: 102; LEFT: 112px; POSITION:
absolute; TOP: 8px" runat="server"
Width="336px" BorderWidth="2px" BorderStyle="Ridge" Font-Size="X-Large" Font
-Bold="True" ForeColor="Red">XmlDocument类的挖掘</asp:label><asp:dropdownlist id="ddl" style="Z-
INDEX: 103; LEFT: 128px; POSITION: absolute; TOP: 280px"
runat="server"></asp:dropdownlist><asp:label id="Label2" style="Z-INDEX: 104; LEFT: 64px;
POSITION: absolute; TOP: 280px" runat="server">姓名:</asp:label><asp:button id="Button1"
style="Z-INDEX: 105; LEFT: 64px; POSITION: absolute; TOP: 328px" runat="server"
Width="64px" Text="查询"></asp:button><asp:label id="Label3" style="Z-INDEX:
106; LEFT: 64px; POSITION: absolute; TOP: 384px" runat="server">邮件地址:</asp:label><asp:button
id="Button2" style="Z-INDEX: 107; LEFT: 152px; POSITION: absolute; TOP: 328px" runat="server"
Width="64px" Text="删除"></asp:button><asp:button id="Button3" style="Z-
INDEX: 108; LEFT: 432px; POSITION: absolute; TOP: 280px" runat="server"
Width="56px" Text="添加" Height="80px"></asp:button><asp:textbox id="tbn"
style="Z-INDEX: 109; LEFT: 152px; POSITION: absolute; TOP: 384px" runat="server"
Width="328px"></asp:textbox><asp:button id="Button4" style="Z-INDEX: 110;
LEFT: 64px; POSITION: absolute; TOP: 416px" runat="server"
Width="424px" Text="修改邮件地址"></asp:button>
<asp:TextBox id="tbna" style="Z-INDEX: 111; LEFT: 312px; POSITION: absolute; TOP:
280px" runat="server"
Width="104px"></asp:TextBox>
<asp:TextBox id="tbc" style="Z-INDEX: 112; LEFT: 312px; POSITION: absolute; TOP:
312px" runat="server"
Width="104px" Height="24px"></asp:TextBox>
<asp:TextBox id="tbe" style="Z-INDEX: 113; LEFT: 312px; POSITION: absolute; TOP:
344px" runat="server"
Width="104px" Height="24px"></asp:TextBox>
<asp:Label id="Label4" style="Z-INDEX: 114; LEFT: 264px; POSITION: absolute; TOP:
280px" runat="server">姓名:</asp:Label>
<asp:Label id="Label5" style="Z-INDEX: 115; LEFT: 264px; POSITION: absolute; TOP:
312px" runat="server">城市:</asp:Label>
<asp:Label id="Label6" style="Z-INDEX: 116; LEFT: 264px; POSITION: absolute; TOP:
344px" runat="server">Email:</asp:Label></FONT></form>
</body>
</HTML>
cs文件
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
//新引入两个命名空间
using System.Xml;
using System.Xml.XPath;
namespace XML
{
/**//// <summary>
/// xdoc 的摘要说明。
/// </summary>
public class xdoc : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.Button Button3;
protected System.Web.UI.WebControls.DataGrid dg;
protected System.Web.UI.WebControls.DropDownList ddl;
protected System.Web.UI.WebControls.TextBox tbn;
protected System.Web.UI.WebControls.Label Label4;
protected System.Web.UI.WebControls.Label Label5;
protected System.Web.UI.WebControls.Label Label6;
protected System.Web.UI.WebControls.TextBox tbna;
protected System.Web.UI.WebControls.TextBox tbc;
protected System.Web.UI.WebControls.TextBox tbe;
protected System.Web.UI.WebControls.Button Button4;
private void Page_Load(object sender, System.EventArgs e)
{//看动作名字就知道了是载入了
if(!Page.IsPostBack)
{
fill();
}
}
//Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Button3.Click += new System.EventHandler(this.Button3_Click);
this.Button4.Click += new System.EventHandler(this.Button4_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
private void fill()
{//绑定方法
DataSet ds=new DataSet();
ds.ReadXml(Server.MapPath("\\xml\\xml\\doc.xml"));
dg.DataSource=ds.Tables[0];
dg.DataBind();
XmlDocument xd=new XmlDocument();
xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
System.Xml.XmlNodeList xnl=xd.GetElementsByTagName("Name");
ddl.Items.Clear();
for(int i=0;i<xnl.Count;i++)
{
ddl.Items.Add(xnl[i].InnerText);
}
}
private void Button1_Click(object sender, System.EventArgs e)
{//查询动作
XmlDocument xd=new XmlDocument();
xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
tbn.Text=xd.SelectSingleNode("//User
[Name='"+ddl.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText.ToString();
}
private void Button2_Click(object sender, System.EventArgs e)
{//删除动作
XmlDocument xdoc=new XmlDocument();
xdoc.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
XmlNodeList xnl=xdoc.SelectSingleNode("dbGuest").ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
XmlNodeList node=xe.GetElementsByTagName("Name");//查找他的Name行
if(node.Count>0)
{
if(node[0].InnerText==ddl.SelectedItem.Text)//如果当前节点的名字和下拉列表传
来的一样,就删除
{
xe.RemoveAll();//111
}
break;
}
}
xdoc.Save(Server.MapPath("\\xml\\xml\\doc.xml"));
fill();
}
private void Button3_Click(object sender, System.EventArgs e)
{//添加动作
string name=this.tbna.Text.ToString();
string city=this.tbc.Text.ToString();
string email=this.tbe.Text.ToString();
XmlDocument xd=new XmlDocument();
xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
//查找dbGuest节点
XmlNode xn=xd.SelectSingleNode("dbGuest");
//创建user节点
XmlElement xe_u=xd.CreateElement("User");
//创建一个name元素
XmlElement xe_a1=xd.CreateElement("Name");
xe_a1.InnerText=name;//设置该元素的值
xe_u.AppendChild(xe_a1);//把刚才创建的元素插入name节点里面去
XmlElement xe_a2=xd.CreateElement("City");
xe_a2.InnerText=city;
xe_u.AppendChild(xe_a2);
XmlElement xe_a3=xd.CreateElement("Email");
xe_a3.InnerText=email;
xe_u.AppendChild(xe_a3);
XmlElement xe_a4=xd.CreateElement("Time");
xe_a4.InnerText=(DateTime.Now).ToString();
xe_u.AppendChild(xe_a4);
//将User节点插入到dbGuest
xn.AppendChild(xe_u);
//保存XML文件
xd.Save(Server.MapPath("\\xml\\xml\\doc.xml"));
fill();
}
private void Button4_Click(object sender, System.EventArgs e)
{//修改邮件地址动作
XmlDocument xd=new XmlDocument();
xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));//载入XML文件
XmlNodeList xnl=xd.SelectSingleNode("dbGuest").ChildNodes;//获取dbGuest节点的全部子节
点
foreach(XmlNode xn in xnl)//迭代所有子节点
{
XmlElement xe=(XmlElement)xn;//将迭代到的子节点转换成XmlElement类型
XmlNodeList xnl2=xe.GetElementsByTagName("Name");//返回所有Name列的数据
if(xnl2.Count>0)//如果大于零就表示有撒,
{
if(xnl2[0].InnerText==ddl.SelectedItem.Text)//如果该列有和被下拉列表中返回的
值一样的数据的话
{
XmlNodeList xnl3=xe.ChildNodes;//再获取下面所有的子节点
foreach(XmlNode xn1 in xnl3)//再迭代子集
{
XmlElement xe2=(XmlElement)xn1;//转换类型
if(xe2.Name=="Email")//如果节点名字是Email的话
{
xe2.InnerText=tbn.Text;//该节点的值就替换成文本框中的
break;
}
}
break;
}
}
}
xd.Save(Server.MapPath("\\xml\\xml\\doc.xml"));
fill();
}
}
}
xml文件
<?xml version="1.0" encoding="utf-8"?>
<dbGuest>
<User>
<Name>天轰穿</Name>
<City>江油</City>
<Email>7665@fds.com</Email>
<Time>2006-5-6 16:10:56</Time>
</User>
<User>
<Name>田洪川</Name>
<City>绵阳</City>
<Email>th@DFs.com</Email>
<Time>2006-5-6 16:06:51</Time>
</User>
<User>
<Name>黄小梅</Name>
<City>南充</City>
<Email>5543@ds.com</Email>
<Time>2006-5-6 16:07:15</Time>
</User>
</dbGuest>