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; private XmlDocument xmlDoc; //load xml file private void LoadXml() { xmlDoc=new XmlDocument(); xmlDoc.Load(Server.MapPath("User.xml")); } //添加節點 private void AddElement() { LoadXml(); XmlNode xmldocSelect=xmlDoc.SelectSingleNode("user"); XmlElement el=xmlDoc.CreateElement("person"); //添加person節點 el.SetAttribute("name","風雲"); //添加person節點的屬性"name" el.SetAttribute("sex","女"); //添加person節點的屬性 "sex" el.SetAttribute("age","25"); //添加person節點的屬性 "age" XmlElement xesub1=xmlDoc.CreateElement("pass"); //添加person節點的裏的節點 xesub1.InnerText="123";//設置文本節點 el.AppendChild(xesub1); XmlElement xesub2=xmlDoc.CreateElement("Address"); xesub2.InnerText="昆明";//設置文本節點 el.AppendChild(xesub2); xmldocSelect.AppendChild(el); xmlDoc.Save(Server.MapPath("user.xml")); } //修改節點 private void updateElement() { LoadXml(); XmlNodeList nodeList=xmlDoc.SelectSingleNode("user").ChildNodes;//獲取bookstore節點的所有子節點 foreach(XmlNode xn in nodeList)//遍歷所有子節點 { XmlElement xe=(XmlElement)xn;//將子節點類型轉換爲XmlElement類型 if(xe.GetAttribute("name")=="風雲")//如果name屬性值爲“風雲” { xe.SetAttribute("name","發明"); //如果下面有子節點在下走 XmlNodeList nls=xe.ChildNodes;//繼續獲取xe子節點的所有子節點 foreach(XmlNode xn1 in nls)//遍歷 { XmlElement xe2=(XmlElement)xn1;//轉換類型 if(xe2.Name=="pass")//如果找到 { xe2.InnerText="66666";//則修改 break; } } break; } } xmlDoc.Save(Server.MapPath("user.xml"));//保存 } //刪出節點 private void deleteNode() { LoadXml(); XmlNodeList xnl=xmlDoc.SelectSingleNode("user").ChildNodes; foreach(XmlNode xn in xnl) { XmlElement xe=(XmlElement)xn; if(xe.GetAttribute("name")=="發明") { //xe.RemoveAttribute("name");//刪除name屬性 xe.RemoveAll();//刪除該節點的全部內容 break; } } xmlDoc.Save(Server.MapPath("user.xml"));//保存 } private void showIt() { LoadXml(); XmlNode xn=xmlDoc.SelectSingleNode("user"); XmlNodeList xnl=xn.ChildNodes; foreach(XmlNode xnf in xnl) { XmlElement xe=(XmlElement)xnf; // Console.WriteLine(xe.GetAttribute("name"));//顯示屬性值 // Console.WriteLine(xe.GetAttribute("sex")); // // XmlNodeList xnf1=xe.ChildNodes; // foreach(XmlNode xn2 in xnf1) // { // Console.WriteLine(xn2.InnerText);//顯示子節點點文本 // } } } |
ASP.Net
對XML進行增刪改查作者:admin 日期:2007-03-13 字體大小: 小 中 大 點擊下載此文件 user.xml <?xml version="1.0" encoding="utf-8"?> <UserInfo> <datarow> <username>333</username> <password>333</password> <study>333</study> </datarow> </UserInfo> 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.IO; using System.Xml; namespace XmlDom { /// <summary> /// WebForm1 的摘要說明。 /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.TextBox TextBox1; protected System.Web.UI.WebControls.TextBox TextBox2; protected System.Web.UI.WebControls.TextBox TextBox3; protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.DataGrid DataGrid1; private void Page_Load(object sender, System.EventArgs e) { // 在此處放置用戶代碼以初始化頁面 ReadXml(); } private void ReadXml() { string url = Server.MapPath("User.xml");//獲得當前文件夾下的XML文件 StreamReader sRead = new StreamReader(url,System.Text.Encoding.GetEncoding("GB2312"));//以一種特定的編碼從字節流讀取字符,必須要轉化成GB2312讀取才不能出亂碼 XmlDataDocument datadoc = new XmlDataDocument();//操作XML文檔 datadoc.DataSet.ReadXml(sRead);//將讀取的字節流存到DataSet裏面去 this.DataGrid1.DataSource = datadoc.DataSet.Tables[0].DefaultView; DataGrid1.DataKeyField="username";//以username建立索引 this.DataGrid1.DataBind(); datadoc = null;//清空對XML數據的操作 sRead.Close();//關閉字節流的讀取 } #region Web 窗體設計器生成的代碼 override protected void OnInit(EventArgs e) { // // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 設計器支持所需的方法 - 不要使用代碼編輯器修改 /// 此方法的內容。 /// </summary> private void InitializeComponent() { this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand); this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand); this.DataGrid1.updateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_updateCommand); this.DataGrid1.deleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_deleteCommand); this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void DataGrid1_deleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { string url = Server.MapPath("user.xml"); string str_username=DataGrid1.DataKeys[e.Item.ItemIndex].ToString(); XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(url); //加載XML文件 XmlNode root=xmlDoc.SelectSingleNode("UserInfo");//查找UserInfo節點 XmlNodeList xnl=root.ChildNodes; //獲取UserInfo下面所以子節點 for(int i=0;i<xnl.Count;i++) { XmlNodeList xnl11=xnl.Item(i).SelectNodes("username");//查找username下面節點集合 XmlElement xe=(XmlElement)xnl11.Item(0); //username節點下面的元素 if(xe.InnerText==str_username) //獲取節點以及所有子集的串聯值 { root.RemoveChild(xe.ParentNode);//移除指頂節點 // xe.ParentNode.RemoveChild(xe); // xnl.Item(i).RemoveChild(xe); // if(i<xnl.Count)i=i-1; } } xmlDoc.Save(url); ReadXml(); } private void Button1_Click(object sender, System.EventArgs e) { string url = Server.MapPath("user.xml"); string str_username = this.TextBox1.Text.ToString(); string str_password = this.TextBox2.Text.ToString(); string str_study = this.TextBox3.Text.ToString(); try { XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(url); //加載XML文檔 XmlNode root=xmlDoc.SelectSingleNode("UserInfo");//查找第一個匹配的XmlNode XmlElement xe1=xmlDoc.CreateElement("datarow");//創建第一個節點的第一個元素 XmlElement xesub1=xmlDoc.CreateElement("username"); //創建第一個節點的第一個元素裏的屬性 xesub1.InnerText=str_username;//設置文本節點 xe1.AppendChild(xesub1);//將指定節點添加到該節點的子節點列表的末尾 XmlElement xesub2=xmlDoc.CreateElement("password"); xesub2.InnerText=str_password; xe1.AppendChild(xesub2); XmlElement xesub3=xmlDoc.CreateElement("study"); xesub3.InnerText=str_study; xe1.AppendChild(xesub3); root.AppendChild(xe1); xmlDoc.Save (url);//保存XML文件 ReadXml(); } catch (Exception ex) { Response.Write(ex.ToString()); } } private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { this.DataGrid1.EditItemIndex=e.Item.ItemIndex; ReadXml(); } private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { this.DataGrid1.EditItemIndex=-1; ReadXml(); } private void DataGrid1_updateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { string url = Server.MapPath("user.xml"); string str_username=DataGrid1.DataKeys[e.Item.ItemIndex].ToString(); TextBox txt_username = (TextBox)(e.Item.Cells[2].Controls[0]); TextBox txt_password = (TextBox)(e.Item.Cells[3].Controls[0]); TextBox drp_study=(TextBox)(e.Item.Cells[4].Controls[0]); XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(url); //加載XML文件 XmlNode root=xmlDoc.SelectSingleNode("UserInfo");//查找UserInfo節點 XmlNodeList xnl=root.ChildNodes; //獲取UserInfo下面所以子節點 for(int i=0;i<xnl.Count;i++) { XmlNodeList xnl11=xnl.Item(i).SelectNodes("username");//查找username下面節點集合 XmlElement xe=(XmlElement)xnl11.Item(0); //username節點下面的元素 if(xe.InnerText==str_username) //獲取節點以及所有子集的串聯值 { xe.InnerText=txt_username.Text; xe.ParentNode.ChildNodes.Item(1).InnerText=txt_password.Text; xe.ParentNode.ChildNodes.Item(2).InnerText=drp_study.Text; } } xmlDoc.Save(url); this.DataGrid1.EditItemIndex = -1; ReadXml(); } } } |