asp.net操作xml实现创建,添加,删除,查询等功能函数

作者:网络 来源:佚名 更新时间:2008-12-14 18:54:19 点击:

xml文件格式

以下是引用片段:
<?xml version="1.0"?>
<dbguest>
  <user>
    <name uid="d">ew</name>
    <city>dsa</city>
    <email>eq</email>
  </user>
</dbguest>

创建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();
            
        }

添加用户:

以下是引用片段:
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();
        }
//绑定xml数据
        private void bindxml()
        {
            if(!system.io.file.exists(xmlfile))
            {
                lblmsg.text = "xml文件"+xmlfile+"不存在,请先点击创建!";
                return;
            }
//            方法一:通过ds 读取 xml
//            dataset ds = new dataset();
//            ds.readxml(xmlfile);
//            if(ds.tables.count > 0)
//            {
//                dgvalue.datasource = ds.tables[0].defaultview;
//                dgvalue.databind();
//            }
            //方法二
            datatable dt = new datatable();
            datacolumn dc = new datacolumn("uid");
            dt.columns.add(dc);            
            dc = new datacolumn("name");
            dt.columns.add(dc);
            dc = new datacolumn("city");
            dt.columns.add(dc);
            dc = new datacolumn("email");
            dt.columns.add(dc);
    
            //将xml文件加载成xmldoc
            xmldocument xmldoc = new xmldocument();
            xmldoc.load(xmlfile);
            //得到dbgust所有子节点
            xmlnodelist xnl=xmldoc.selectsinglenode("dbguest").childnodes;
            
            for(int i = 0 ; i < xnl.count;i++)
            {
                //在每个子节点是遍历    xn 代表的是一个个user
                string uid = xnl.item(i).childnodes[0].attributes["uid"].value;
                string name = xnl.item(i).childnodes[0].innertext;
                string city = xnl.item(i).childnodes[1].innertext;
                string email = xnl.item(i).childnodes[2].innertext;
                datarow dr = dt.newrow();
                dr[0] = uid;
                dr[1] = name;
                dr[2] = city;
                dr[3] = email;
                dt.rows.add(dr);                
            }
            dgvalue.datasource = dt;
            dgvalue.databind();

            
        }

删除用户:

 

以下是引用片段:
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();
        }

更新用户:

 

以下是引用片段:
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();
        }

查询用户:

以下是引用片段:
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;
        }

中国最大的web开发资源网站及技术社区,