zoukankan      html  css  js  c++  java
  • xml 增 删 改 查

    xml文件格式

     
    1. <?xml version="1.0"?>  
    2. <dbGuest>  
    3.   <User>  
    4.     <Name uid="d">ew</Name>  
    5.     <City>dsa</City>  
    6.     <Email>eq</Email>  
    7.   </User>  
    8. </dbGuest>  


    操作方式
    创建XML文件

     
    1. private void btnCreateXml_Click(object sender, System.EventArgs e)   
    2.     {   
    3.         //创建XML文档对象   
    4.         System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();   
    5.         //创建xml 声明节点   
    6.         System.Xml.XmlNode xmlnode = xmldoc.CreateNode(System.Xml.XmlNodeType.XmlDeclaration, """");   
    7.         //添加上述创建和 xml声明节点   
    8.         xmldoc.AppendChild(xmlnode);   
    9.         //创建xml dbGuest 元素(根节点)   
    10.         System.Xml.XmlElement xmlelem = xmldoc.CreateElement("""dbGuest""");   
    11.   
    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.     }   


    //添加用户

     
    1. private void btnAdd_Click(object sender, System.EventArgs e)   
    2.         {   
    3.             string uID = txtUID.Text;   
    4.             string userName = txtUserName.Text;   
    5.             string City = txtCity.Text;   
    6.             string Email = txtEmail.Text;   
    7.             if(!System.IO.File.Exists(xmlFile))   
    8.             {   
    9.                 lblMsg.Text = "xml文件"+xmlFile+"不存在,请先点击创建!";   
    10.                 return;   
    11.             }   
    12.             XmlDocument xmlDoc                = new XmlDocument();   
    13.             xmlDoc.Load(xmlFile);    //加载文件   
    14.             XmlNode root                    = xmlDoc.SelectSingleNode("dbGuest");//查找<dbGuest>   
    15.             XmlElement xe_dbGuest_User        = xmlDoc.CreateElement("User");//创建一个<User>节点   
    16.             XmlElement xe_dbGuest_User_Name    = xmlDoc.CreateElement("Name");   
    17.             xe_dbGuest_User_Name.InnerText    = userName;//设置文本节点   
    18.            
    19.             XmlAttribute a                    = xmlDoc.CreateAttribute("uid");//创建一个 属性   
    20.             a.Value                            = uID;   
    21.             xe_dbGuest_User_Name.Attributes.Append(a);//增加一个属性   
    22.             xe_dbGuest_User.AppendChild(xe_dbGuest_User_Name);//添加到<User>节点中   
    23.             XmlElement xe_dbGuest_User_City    = xmlDoc.CreateElement("City");//创建City节点   
    24.             xe_dbGuest_User_City.InnerText    = City;   
    25.             xe_dbGuest_User.AppendChild(xe_dbGuest_User_City);//添加到<User>节点中   
    26.             XmlElement xe_dbGuest_User_Email    = xmlDoc.CreateElement("Email");//创建Email节点   
    27.             xe_dbGuest_User_Email.InnerText    = Email;   
    28.             xe_dbGuest_User.AppendChild(xe_dbGuest_User_Email);   
    29.   
    30.             root.AppendChild(xe_dbGuest_User);//添加到<dbGuest>节点中   
    31.             xmlDoc.Save(xmlFile);//保存文件   
    32.             lblMsg.Text = "成功添加用户";   
    33.             GetXmlContent();   
    34.             BindXML();   
    35.             BindUserNames();   
    36.         }   
    37. //绑定xml数据   
    38.         private void BindXML()   
    39.         {   
    40.             if(!System.IO.File.Exists(xmlFile))   
    41.             {   
    42.                 lblMsg.Text = "xml文件"+xmlFile+"不存在,请先点击创建!";   
    43.                 return;   
    44.             }   
    45. //            方法一:通过ds 读取 xml   
    46. //            DataSet ds = new DataSet();   
    47. //            ds.ReadXml(xmlFile);   
    48. //            if(ds.Tables.Count > 0)   
    49. //            {   
    50. //                dgValue.DataSource = ds.Tables[0].DefaultView;   
    51. //                dgValue.DataBind();   
    52. //            }   
    53.             //方法二   
    54.             DataTable dt = new DataTable();   
    55.             DataColumn dc = new DataColumn("uid");   
    56.             dt.Columns.Add(dc);               
    57.             dc = new DataColumn("name");   
    58.             dt.Columns.Add(dc);   
    59.             dc = new DataColumn("city");   
    60.             dt.Columns.Add(dc);   
    61.             dc = new DataColumn("email");   
    62.             dt.Columns.Add(dc);   
    63.        
    64.             //将xml文件加载成xmlDoc   
    65.             XmlDocument xmlDoc = new XmlDocument();   
    66.             xmlDoc.Load(xmlFile);   
    67.             //得到dbGust所有子节点   
    68.             XmlNodeList xnl=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;   
    69.                
    70.             for(int i = 0 ; i < xnl.Count;i++)   
    71.             {   
    72.                 //在每个子节点是遍历    xn 代表的是一个个User   
    73.                 string uid = xnl.Item(i).ChildNodes[0].Attributes["uid"].Value;   
    74.                 string name = xnl.Item(i).ChildNodes[0].InnerText;   
    75.                 string city = xnl.Item(i).ChildNodes[1].InnerText;   
    76.                 string email = xnl.Item(i).ChildNodes[2].InnerText;   
    77.                 DataRow dr = dt.NewRow();   
    78.                 dr[0] = uid;   
    79.                 dr[1] = name;   
    80.                 dr[2] = city;   
    81.                 dr[3] = email;   
    82.                 dt.Rows.Add(dr);                   
    83.             }   
    84.             dgValue.DataSource = dt;   
    85.             dgValue.DataBind();   
    86.   
    87.                
    88.         }   


    //删除用户

     
    1. private void btnDelete_Click(object sender, System.EventArgs e)   
    2.       {   
    3.           string selectName = ddlNames.SelectedItem.Text;   
    4.           string selectID = ddlNames.SelectedValue;   
    5.           XmlDocument xmlDoc = new XmlDocument();   
    6.           xmlDoc.Load(xmlFile);   
    7.           XmlNodeList xnl=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;   
    8.   
    9.              
    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.       }   


    //更新用户

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


    //查询

     
    1. private void btnSelect_Click(object sender, System.EventArgs e)   
    2.     {   
    3.         XmlDocument doc = new XmlDocument();   
    4.         doc.Load(xmlFile);   
    5.         string selectName = ddlNames.SelectedItem.Text;   
    6.         string email = doc.SelectSingleNode("//User[Name='"+selectName+"']").ChildNodes.Item(2).InnerText;   
    7.        
    8.            
    9.         lblMsg.Text = "查询"+selectName+"用户email为"+email;   
    10.     }   
  • 相关阅读:
    BZOJ 1269 文本编辑器editor(伸展树)
    NOI 2017 整数(线段树)
    HAOI 2018 染色(容斥+NTT)
    HDU 5279 YJC plays Minecraft(NTT+分治)
    HDU 6088 Rikka with Rock-paper-scissors(NTT+欧拉函数)
    HDU 5552 Bus Routes(NTT+分治)
    HDU 4656 Evaluation(MTT)
    HDU 5829 Rikka with Subset(NTT)
    HDU 6061 RXD and functions(NTT)
    JOISC 2014 邮戳拉力赛(DP)
  • 原文地址:https://www.cnblogs.com/jiangchongwei/p/1534990.html
Copyright © 2011-2022 走看看