用.NET可以方便的操作XML,当做数据源
*当XML转到DataSet的时候会遵循如下几个原则
*具有属性的元素和具有自节点的元素会变成表
*重复的元素会变成列
这里使用GridView绑定
XML:
<?
xml version="1.0" standalone="yes"
?>
< family >
< p relation ="myfather" >
< name > 安 </ name >
< sex > man </ sex >
< age > 60 </ age >
</ p >
< p relation ="mymather" >
< name > 宝 </ name >
< sex > women </ sex >
< age > 55 </ age >
</ p >
</ family >
< family >
< p relation ="myfather" >
< name > 安 </ name >
< sex > man </ sex >
< age > 60 </ age >
</ p >
< p relation ="mymather" >
< name > 宝 </ name >
< sex > women </ sex >
< age > 55 </ age >
</ p >
</ family >
protected
void
Page_Load(
object
sender, EventArgs e)
{
bind();
}
protected void bind()
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath( " ../people.xml " ));
GridView1.DataSource = ds.Tables[ 0 ].DefaultView;
GridView1.DataBind();
Session[ " ds " ] = ds;
}
{
bind();
}
protected void bind()
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath( " ../people.xml " ));
GridView1.DataSource = ds.Tables[ 0 ].DefaultView;
GridView1.DataBind();
Session[ " ds " ] = ds;
}
protected
void
Button1_Click(
object
sender, EventArgs e)
... {
DataSet ds = (DataSet)Session["ds"];
string name = this.TextBox1.Text.ToString();
string age = this.TextBox2.Text.ToString();
string sex = this.TextBox3.Text.ToString();
string relation = this.RadioButtonList1.SelectedValue.ToString();
DataRow dr = ds.Tables[0].NewRow();
dr["relation"] = relation;
dr["age"] = age;
dr["sex"] = sex;
dr["name"] = name;
ds.Tables[0].Rows.Add(dr);
Session["ds"] = ds;
ds.WriteXml(Server.MapPath("../people.xml"));
bind();
}
... {
DataSet ds = (DataSet)Session["ds"];
string name = this.TextBox1.Text.ToString();
string age = this.TextBox2.Text.ToString();
string sex = this.TextBox3.Text.ToString();
string relation = this.RadioButtonList1.SelectedValue.ToString();
DataRow dr = ds.Tables[0].NewRow();
dr["relation"] = relation;
dr["age"] = age;
dr["sex"] = sex;
dr["name"] = name;
ds.Tables[0].Rows.Add(dr);
Session["ds"] = ds;
ds.WriteXml(Server.MapPath("../people.xml"));
bind();
}
删除:
protected
void
GridView1_RowDeleting(
object
sender, GridViewDeleteEventArgs e)
{
DataSet ds = (DataSet)Session[ " ds " ];
ds.Tables[ 0 ].Rows.Remove(ds.Tables[ 0 ].Rows[e.RowIndex]);
Session[ " ds " ] = ds;
ds.WriteXml(Server.MapPath( " ../people.xml " ));
bind();
}
{
DataSet ds = (DataSet)Session[ " ds " ];
ds.Tables[ 0 ].Rows.Remove(ds.Tables[ 0 ].Rows[e.RowIndex]);
Session[ " ds " ] = ds;
ds.WriteXml(Server.MapPath( " ../people.xml " ));
bind();
}
修改: