正文

XML 增、删、改和查示例(xml文件可以修改吗?)学到了

文章摘要

该代码为一个基于ASP.NET的Windows Forms应用程序,用于管理和操作一个名为“dbGuest.xml”的XML数据文件。通过绑定XML数据到DataGrid,程序实现了以下功能:通过“查询”按钮加载所有数据,通过“修改”按钮更新特定记录的Email字段,通过“删除”按钮删除指定记录,通过“添加”按钮新增记录。代码使用System.XML相关API进行数据读写,并通过绑定将数据动态加载至DataGrid中。程序结构清晰,功能模块分明,主要依赖于数据绑定和DOM操作来实现数据展示和修改功能。

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

 DsAndXML.OpXMLFile

{

    
///<summary>    ///

 Main 的摘要说明。

    
///</summary>
publicclass

 Main : System.Web.UI.Page

    

{

        
protected

 System.Web.UI.WebControls.Button btnQuery;

        
protected

 System.Web.UI.WebControls.Button btnChange;

        
protected

 System.Web.UI.WebControls.Button btnDelete;

        
protected

 System.Web.UI.WebControls.Button btnAdd;

        
protected

 System.Web.UI.WebControls.DropDownList ddlName;

        
protected

 System.Web.UI.WebControls.Label Label1;

        
protected

 System.Web.UI.WebControls.Label Label2;

        
protected

 System.Web.UI.WebControls.Label lbEmail;

        
protected

 System.Web.UI.WebControls.TextBox tbNewMail;

        
protected

 System.Web.UI.WebControls.Label Label3;

        
protected

 System.Web.UI.WebControls.DataGrid dgShow;

        
privatevoid Page_Load(object

 sender, System.EventArgs e)

        

{

            
// 在此处放置用户代码以初始化页面if(!

IsPostBack)

            Bind();

        }
        privatevoid

 Bind()

        

{

            DataSet ds 
=new

 DataSet();

            ds.ReadXml(Server.MapPath(
“.\\db\\dbGuest.xml“

));

            dgShow.DataSource 
= ds.Tables[0

].DefaultView;

            dgShow.DataBind();

            XmlDocument doc 
=new

 XmlDocument();

            doc.Load(Server.MapPath(
“.\\db\\dbGuest.xml“

));

            XmlNodeList elemList 
= doc.GetElementsByTagName(“Name“

);

            ddlName.Items.Clear();

            
for(int i=0;i<elemList.Count;i++

)

             ddlName.Items.Add(elemList[i].InnerXml);

        }
        Web Form Designer generated code#region Web Form Designer generated code        overrideprotectedvoid

 OnInit(EventArgs e)

        

{

            
//            //

 CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。

            

//

            InitializeComponent();

            
base

.OnInit(e);

        }
        ///<summary>        ///

 设计器支持所需的方法 – 不要使用代码编辑器修改

        
///

 此方法的内容。

        
///</summary>
privatevoid

 InitializeComponent()

        

{    

            
this.btnQuery.Click +=new System.EventHandler(this

.btnQuery_Click);

            
this.btnChange.Click +=new System.EventHandler(this

.btnChange_Click);

            
this.btnDelete.Click +=new System.EventHandler(this

.btnDelete_Click);

            
this.btnAdd.Click +=new System.EventHandler(this

.btnAdd_Click);

            
this.Load +=new System.EventHandler(this

.Page_Load);

        }
        #endregion
        privatevoid btnQuery_Click(object

 sender, System.EventArgs e)

        

{

            XmlDocument doc 
=new

 XmlDocument();

            doc.Load(Server.MapPath(
“.\\db\\dbGuest.xml“

));

            lbEmail.Text 
= doc.SelectSingleNode(“//User[Name=’“+ddlName.SelectedItem.Text+“‘]“).ChildNodes.Item(2

).InnerText;

        }
        privatevoid btnChange_Click(object

 sender, System.EventArgs e)

        

{

            XmlDocument xmlDoc 
=new

 XmlDocument();

            xmlDoc.Load(Server.MapPath(
“.\\db\\dbGuest.xml“

));

            XmlNodeList nodeList
=xmlDoc.SelectSingleNode(“dbGuest“).ChildNodes;//获取dbGuest节点的所有子节点foreach(XmlNode xn in nodeList)//遍历所有子节点

{

                XmlElement xe
=(XmlElement)xn;//将子节点类型转换为XmlElement类型                XmlNodeList node = xe.GetElementsByTagName(“Name“

);

                
if(node.Count>0

)

                

{

                    
if(node[0].InnerText==

ddlName.SelectedItem.Text)

                    

{

                        XmlNodeList nls
=xe.ChildNodes;//继续获取xe子节点的所有子节点foreach(XmlNode xn1 in nls)//遍历

{

                            XmlElement xe2
=(XmlElement)xn1;//转换类型if(xe2.Name==“Email“)//如果找到

{

                                xe2.InnerText
=tbNewMail.Text;//则修改break;//找到退出来就可以了                            }
                        }
                        break

;

                    }
                }
            }
            xmlDoc.Save(Server.MapPath(“.\\db\\dbGuest.xml“

));

            Bind();

        }
        privatevoid btnDelete_Click(object

 sender, System.EventArgs e)

        

{

            XmlDocument xmlDoc 
=new

 XmlDocument();

            xmlDoc.Load(Server.MapPath(
“.\\db\\dbGuest.xml“

));

            XmlNodeList xnl
=xmlDoc.SelectSingleNode(“dbGuest“

).ChildNodes;

            
foreach(XmlNode xn in

 xnl)

            

{

                XmlElement xe
=

(XmlElement)xn;

                XmlNodeList node 
= xe.GetElementsByTagName(“Name“

);

                
if(node.Count>0

)

                

{

                    
if(node[0].InnerText==

ddlName.SelectedItem.Text)

                        xe.RemoveAll();
//删除该节点的全部内容break

;

                }
            }
            xmlDoc.Save(Server.MapPath(“.\\db\\dbGuest.xml“

));

            Bind();

        }
        privatevoid btnAdd_Click(object

 sender, System.EventArgs e)

        

{

            XmlDocument xmlDoc 
=new

 XmlDocument();

            xmlDoc.Load(Server.MapPath(
“.\\db\\dbGuest.xml“

));

            XmlNode root
=xmlDoc.SelectSingleNode(“dbGuest“);//查找<dbGuest>            XmlElement xe1=xmlDoc.CreateElement(“User“);//创建一个<User>节点            XmlElement xesub1=xmlDoc.CreateElement(“Name“

);

            xesub1.InnerText
=“Guset“;//设置文本节点            xe1.AppendChild(xesub1);//添加到<User>节点中            XmlElement xesub2=xmlDoc.CreateElement(“City“

);

            xesub2.InnerText
=“上海“

;

            xe1.AppendChild(xesub2);

            XmlElement xesub3
=xmlDoc.CreateElement(“Email“

);

            xesub3.InnerText
=“ss@22.net“

;

            xe1.AppendChild(xesub3);

            root.AppendChild(xe1);
//添加到<dbGuest>节点中            xmlDoc.Save(Server.MapPath(“.\\db\\dbGuest.xml“

));

            Bind();

        }
    }
}