xml 增 删 改 查 xml

文件格式

<?xml version="1.0"?> 

<dbGuest> 

	<User>

		<Name uid="d">ew</Name>

		<City>dsa</City>

		<Email>eq</Email> 

	</User> 

</dbGuest>

		

view plaincopy to clipboardprint?
01.//创建XML文件   
02.private void btnCreateXml_Click(object sender, System.EventArgs e)  
03.    {  
04.        //创建XML文档对象   
05.        System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();  
06.        //创建xml 声明节点   
07.        System.Xml.XmlNode xmlnode = xmldoc.CreateNode(System.Xml.XmlNodeType.XmlDeclaration, "", "");  
08.        //添加上述创建和 xml声明节点   
09.        xmldoc.AppendChild(xmlnode);  
10.        //创建xml dbGuest 元素(根节点)   
11.        System.Xml.XmlElement xmlelem = xmldoc.CreateElement("", "dbGuest", "");  
12.        xmldoc.AppendChild(xmlelem);  
13.        try  
14.        {  
15.            xmldoc.Save(xmlFile);  
16.        }  
17.        catch(Exception ex)  
18.        {  
19.            if(ex.Message.IndexOf("访问被拒绝") != -1)  
20.            {  
21.                lblMsg.Text = "创建xml文档失败,没有写入权限,请检查xmldocs文件夹的写入权限!";  
22.                return;  
23.            }                  
24.        }  
25.        lblMsg.Text = "xml文件创建成功";  
26.        BindXMLFiles();  
27.        GetXmlContent();  
28.        BindUserNames();  
29.          
30.    }  
    //创建XML文件
    private void btnCreateXml_Click(object sender, System.EventArgs e)
        {
            //创建XML文档对象
            System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
            //创建xml 声明节点
            System.Xml.XmlNode xmlnode = xmldoc.CreateNode(System.Xml.XmlNodeType.XmlDeclaration, "", "");
            //添加上述创建和 xml声明节点
            xmldoc.AppendChild(xmlnode);
            //创建xml dbGuest 元素(根节点)
            System.Xml.XmlElement xmlelem = xmldoc.CreateElement("", "dbGuest", "");
            xmldoc.AppendChild(xmlelem);
            try
            {
                xmldoc.Save(xmlFile);
            }
            catch(Exception ex)
            {
                if(ex.Message.IndexOf("访问被拒绝") != -1)
                {
                    lblMsg.Text = "创建xml文档失败,没有写入权限,请检查xmldocs文件夹的写入权限!";
                    return;
                }                
            }
            lblMsg.Text = "xml文件创建成功";
            BindXMLFiles();
            GetXmlContent();
            BindUserNames();
            
        }
 

view plaincopy to clipboardprint?
01.//添加用户   
02.private void btnAdd_Click(object sender, System.EventArgs e)  
03.        {  
04.            string uID = txtUID.Text;  
05.            string userName = txtUserName.Text;  
06.            string City = txtCity.Text;  
07.            string Email = txtEmail.Text;  
08.            if(!System.IO.File.Exists(xmlFile))  
09.            {  
10.                lblMsg.Text = "xml文件"+xmlFile+"不存在,请先点击创建!";  
11.                return;  
12.            }  
13.            XmlDocument xmlDoc                = new XmlDocument();  
14.            xmlDoc.Load(xmlFile);    //加载文件   
15.            XmlNode root                    = xmlDoc.SelectSingleNode("dbGuest");//查找<dbGuest>   
16.            XmlElement xe_dbGuest_User        = xmlDoc.CreateElement("User");//创建一个<User>节点   
17.            XmlElement xe_dbGuest_User_Name    = xmlDoc.CreateElement("Name");  
18.            xe_dbGuest_User_Name.InnerText    = userName;//设置文本节点   
19.          
20.            XmlAttribute a                    = xmlDoc.CreateAttribute("uid");//创建一个 属性   
21.            a.Value                            = uID;  
22.            xe_dbGuest_User_Name.Attributes.Append(a);//增加一个属性   
23.            xe_dbGuest_User.AppendChild(xe_dbGuest_User_Name);//添加到<User>节点中   
24.            XmlElement xe_dbGuest_User_City    = xmlDoc.CreateElement("City");//创建City节点   
25.            xe_dbGuest_User_City.InnerText    = City;  
26.            xe_dbGuest_User.AppendChild(xe_dbGuest_User_City);//添加到<User>节点中   
27.            XmlElement xe_dbGuest_User_Email    = xmlDoc.CreateElement("Email");//创建Email节点   
28.            xe_dbGuest_User_Email.InnerText    = Email;  
29.            xe_dbGuest_User.AppendChild(xe_dbGuest_User_Email);  
30.            root.AppendChild(xe_dbGuest_User);//添加到<dbGuest>节点中   
31.            xmlDoc.Save(xmlFile);//保存文件   
32.            lblMsg.Text = "成功添加用户";  
33.            GetXmlContent();  
34.            BindXML();  
35.            BindUserNames();  
36.        }  
//添加用户
private void btnAdd_Click(object sender, System.EventArgs e)
        {
            string uID = txtUID.Text;
            string userName = txtUserName.Text;
            string City = txtCity.Text;
            string Email = txtEmail.Text;
            if(!System.IO.File.Exists(xmlFile))
            {
                lblMsg.Text = "xml文件"+xmlFile+"不存在,请先点击创建!";
                return;
            }
            XmlDocument xmlDoc                = new XmlDocument();
            xmlDoc.Load(xmlFile);    //加载文件
            XmlNode root                    = xmlDoc.SelectSingleNode("dbGuest");//查找<dbGuest>
            XmlElement xe_dbGuest_User        = xmlDoc.CreateElement("User");//创建一个<User>节点
            XmlElement xe_dbGuest_User_Name    = xmlDoc.CreateElement("Name");
            xe_dbGuest_User_Name.InnerText    = userName;//设置文本节点
        
            XmlAttribute a                    = xmlDoc.CreateAttribute("uid");//创建一个 属性
            a.Value                            = uID;
            xe_dbGuest_User_Name.Attributes.Append(a);//增加一个属性
            xe_dbGuest_User.AppendChild(xe_dbGuest_User_Name);//添加到<User>节点中
            XmlElement xe_dbGuest_User_City    = xmlDoc.CreateElement("City");//创建City节点
            xe_dbGuest_User_City.InnerText    = City;
            xe_dbGuest_User.AppendChild(xe_dbGuest_User_City);//添加到<User>节点中
            XmlElement xe_dbGuest_User_Email    = xmlDoc.CreateElement("Email");//创建Email节点
            xe_dbGuest_User_Email.InnerText    = Email;
            xe_dbGuest_User.AppendChild(xe_dbGuest_User_Email);
            root.AppendChild(xe_dbGuest_User);//添加到<dbGuest>节点中
            xmlDoc.Save(xmlFile);//保存文件
            lblMsg.Text = "成功添加用户";
            GetXmlContent();
            BindXML();
            BindUserNames();
        }
 

view plaincopy to clipboardprint?
01.//删除用户   
02.  private void btnDelete_Click(object sender, System.EventArgs e)  
03.        {  
04.            string selectName = ddlNames.SelectedItem.Text;  
05.            string selectID = ddlNames.SelectedValue;  
06.            XmlDocument xmlDoc = new XmlDocument();  
07.            xmlDoc.Load(xmlFile);  
08.            XmlNodeList xnl=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;  
09.              
10.            for(int i = 0 ; i < xnl.Count ; i++)  
11.            {  
12.                XmlElement xe=(XmlElement)xnl[i];//第i个dbGust子节点   
13.                XmlNodeList node = xe.GetElementsByTagName("Name");  
14.                if(node.Count>0)  
15.                {  
16.                    //判断为用户选择的   
17.                    if(node[0].InnerText==selectName && node[0].Attributes["uid"].Value == selectID)  
18.                    {  
19.                        string m = node[0].InnerText;  
20.                        xmlDoc.SelectSingleNode("dbGuest").RemoveChild(node[0].ParentNode);//删除该User节点       
21.                        //xe.RemoveAll();//删除该节点的全部内容 这二种有差别   
22.                          
23.                        break;  
24.                          
25.                    }  
26.                      
27.                }  
28.            }  
29.              
30.              
31.            xmlDoc.Save(xmlFile);  
32.            BindXML();  
33.            GetXmlContent();  
34.            BindUserNames();  
35.        }  
//删除用户
  private void btnDelete_Click(object sender, System.EventArgs e)
        {
            string selectName = ddlNames.SelectedItem.Text;
            string selectID = ddlNames.SelectedValue;
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlFile);
            XmlNodeList xnl=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;
            
            for(int i = 0 ; i < xnl.Count ; i++)
            {
                XmlElement xe=(XmlElement)xnl[i];//第i个dbGust子节点
                XmlNodeList node = xe.GetElementsByTagName("Name");
                if(node.Count>0)
                {
                    //判断为用户选择的
                    if(node[0].InnerText==selectName && node[0].Attributes["uid"].Value == selectID)
                    {
                        string m = node[0].InnerText;
                        xmlDoc.SelectSingleNode("dbGuest").RemoveChild(node[0].ParentNode);//删除该User节点    
                        //xe.RemoveAll();//删除该节点的全部内容 这二种有差别
                        
                        break;
                        
                    }
                    
                }
            }
            
            
            xmlDoc.Save(xmlFile);
            BindXML();
            GetXmlContent();
            BindUserNames();
        }
 

view plaincopy to clipboardprint?
01.//更新用户   
02.  
03.    private void btnUpdate_Click(object sender, System.EventArgs e)  
04.        {  
05.            string selectName = ddlNames.SelectedItem.Text;  
06.            string selectID = ddlNames.SelectedValue;  
07.            XmlDocument xmlDoc = new XmlDocument();  
08.            xmlDoc.Load(xmlFile);  
09.            XmlNodeList nodeList=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;//获取dbGuest节点的所有子节点   
10.            foreach(XmlNode xn in nodeList)//遍历所有子节点   
11.            {  
12.                XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型   
13.              
14.                XmlNodeList node = xe.GetElementsByTagName("Name");  
15.                if(node.Count>0)  
16.                {  
17.                    //判断为用户选择的   
18.                    if(node[0].InnerText==selectName && node[0].Attributes["uid"].Value == selectID)  
19.                    {  
20.                        XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点   
21.                        foreach(XmlNode xn1 in nls)//遍历   
22.                        {  
23.                            XmlElement xe2=(XmlElement)xn1;//转换类型   
24.                            if(xe2.Name=="Email")//如果找到Email属性   
25.                            {  
26.                                xe2.InnerText="http://eflylab.cnblogs.com";//则修改  
27.                                break;//找到退出来就可以了   
28.                            }  
29.                        }  
30.                        break;  
31.                    }  
32.                }  
33.                  
34.            }  
35.            xmlDoc.Save(xmlFile);  
36.            BindXML();  
37.            GetXmlContent();  
38.        }  
//更新用户

    private void btnUpdate_Click(object sender, System.EventArgs e)
        {
            string selectName = ddlNames.SelectedItem.Text;
            string selectID = ddlNames.SelectedValue;
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlFile);
            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==selectName && node[0].Attributes["uid"].Value == selectID)
                    {
                        XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
                        foreach(XmlNode xn1 in nls)//遍历
                        {
                            XmlElement xe2=(XmlElement)xn1;//转换类型
                            if(xe2.Name=="Email")//如果找到Email属性
                            {
                                xe2.InnerText="http://eflylab.cnblogs.com";//则修改
                                break;//找到退出来就可以了
                            }
                        }
                        break;
                    }
                }
                
            }
            xmlDoc.Save(xmlFile);
            BindXML();
            GetXmlContent();
        }
 

view plaincopy to clipboardprint?
01.//查询   
02.    private void btnSelect_Click(object sender, System.EventArgs e)  
03.        {  
04.            XmlDocument doc = new XmlDocument();  
05.            doc.Load(xmlFile);  
06.            string selectName = ddlNames.SelectedItem.Text;  
07.            string email = doc.SelectSingleNode("//User[Name='"+selectName+"']").ChildNodes.Item(2).InnerText;  
08.          
09.              
10.            lblMsg.Text = "查询"+selectName+"用户email为"+email;  
11.        }  
//查询
    private void btnSelect_Click(object sender, System.EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(xmlFile);
            string selectName = ddlNames.SelectedItem.Text;
            string email = doc.SelectSingleNode("//User[Name='"+selectName+"']").ChildNodes.Item(2).InnerText;
        
            
            lblMsg.Text = "查询"+selectName+"用户email为"+email;
        } 

view plaincopy to clipboardprint?
01.//绑定xml数据   
02.        private void BindXML()  
03.        {  
04.            if(!System.IO.File.Exists(xmlFile))  
05.            {  
06.                lblMsg.Text = "xml文件"+xmlFile+"不存在,请先点击创建!";  
07.                return;  
08.            }  
09.//            方法一:通过ds 读取 xml   
10.//            DataSet ds = new DataSet();   
11.//            ds.ReadXml(xmlFile);   
12.//            if(ds.Tables.Count > 0)   
13.//            {   
14.//                dgValue.DataSource = ds.Tables[0].DefaultView;   
15.//                dgValue.DataBind();   
16.//            }   
17.            //方法二   
18.            DataTable dt = new DataTable();  
19.            DataColumn dc = new DataColumn("uid");  
20.            dt.Columns.Add(dc);              
21.            dc = new DataColumn("name");  
22.            dt.Columns.Add(dc);  
23.            dc = new DataColumn("city");  
24.            dt.Columns.Add(dc);  
25.            dc = new DataColumn("email");  
26.            dt.Columns.Add(dc);  
27.      
28.            //将xml文件加载成xmlDoc   
29.            XmlDocument xmlDoc = new XmlDocument();  
30.            xmlDoc.Load(xmlFile);  
31.            //得到dbGust所有子节点   
32.            XmlNodeList xnl=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;  
33.              
34.            for(int i = 0 ; i < xnl.Count;i++)  
35.            {  
36.                //在每个子节点是遍历    xn 代表的是一个个User   
37.                string uid = xnl.Item(i).ChildNodes[0].Attributes["uid"].Value;  
38.                string name = xnl.Item(i).ChildNodes[0].InnerText;  
39.                string city = xnl.Item(i).ChildNodes[1].InnerText;  
40.                string email = xnl.Item(i).ChildNodes[2].InnerText;  
41.                DataRow dr = dt.NewRow();  
42.                dr[0] = uid;  
43.                dr[1] = name;  
44.                dr[2] = city;  
45.                dr[3] = email;  
46.                dt.Rows.Add(dr);                  
47.            }  
48.            dgValue.DataSource = dt;  
49.            dgValue.DataBind();  
50.              
51.        }  

posted on 2011-09-15 09:16  等待只因渴求  阅读(156)  评论(0)    收藏  举报