欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#實現XML的增刪查改

程序员文章站 2022-04-28 13:50:06
命名空間:using System.Xml; 1、查找某個節點是否存在: 2、增加節點: 添加節點,如果有多級節點,從n級節點往上添加節點的順序添加。 3、刪除節點: 4、修改節點: https://www.cnblogs.com/guxia/p/8242483.html ......

命名空間:using system.xml;

1、查找某個節點是否存在:

    private xmldocument xmldoc;
    private string mod="1";  
    private bool findnode()
 {
       xmldoc = new xmldocument();

       xmldoc.load("d://a.xml");      //加載xml文檔內容,路徑為xml路徑

       xmlnode s = xmldoc.selectsinglenode("//" + "model");//第一層節點
                if (s.haschildnodes)
                {
                    xmlnodelist xnl = s.childnodes;//子節點列表
                    foreach (xmlnode xn in xnl)
                    {
                        xmlelement xn1 = (xmlelement)xn;//節點轉換為元素
                        if (xn1.name == mod)//節點找到,返回true
                        {
                            return true;
                        }
                    }
                    return false;//節點沒找到,返回false
                }
}

 2、增加節點:

      添加節點,如果有多級節點,從n級節點往上添加節點的順序添加。

   private static xmlelement xmlem;
public bool addnode( ) { xmldoc = new xmldocument(); if (!file.exists("d://a.xml"))//xml文件不存在 { xmldeclaration xmldecl; xmldecl = xmldoc.createxmldeclaration("1.0", "gb2312", null); //xml頂部聲明 xmldoc.appendchild(xmldecl);//xml添加頭部聲明 xmlem = xmldoc.createelement("", "model", ""); //創建第一級元素 xmlelement xe8= xmldoc.createelement(mod); //創建第一級節點的子節點,即第二級節點,要添加的節點 xmlem.appendchild(xe8); //在第一級節點追加第二級節點 xmldoc.appendchild(xmlem); //文件中添加添加第一級節點和它的子節點 } else//xml文件存在 { xmldoc.load(sett.pahxml)//加載xml內容 if (!findnode()) //查找節點不存在 { xmlnode rot = xmldoc.selectsinglenode("//model"); //挑選第一個節點 xmlem = xmldoc.createelement(mod); //創建要添加的節點 rot.appendchild(xmlem); //添加節點 xmldoc.appendchild(rot); } } xmldoc.save("d://a.xml"); return true; }

 3、刪除節點:  

     public  bool removenode()
     {
                xmldoc = new xmldocument();    
                if (!file.exists("d://a.xml"))
                {
                    return true;
                }
                else
                {
                    xmldoc.load(sett.pahxml);
                    if (findnode())//節點存在
                    {           
                            xmlnode root = xmldoc.selectsinglenode("//model/"+sett.station.mod);//查找父節點
                            xmlnodelist nl = root.childnodes;
                            foreach (xmlnode no in nl)
                            {
                                xmlelement f = (xmlelement)no;
                                if (f.name ==  station.id)
                                {
                                    root.removechild(f);//刪除節點
                                    break;
                                }
                            }
                             xmldoc.save(sett.pahxml);
                             return true;
                        }
                        else
                        {
                            return true;
                        }
                }
        }    

 4、修改節點:

 private bool modifynode()
{
     xmldoc.load(sett.pahxml);             
                    if (findmolde())
                    {
                        xmlnode root = xmldoc.selectsinglenode("//model/" + station.mod);//上級節點
                        if(findid())//查找節點是否存在
                        {
                            xmlnodelist nl = root.childnodes;
                            foreach(xmlnode no in nl)
                            {
                                xmlelement f = (xmlelement)no;
                                if(f.name==station.id)//查找到要修改的節點
                                {
                                    f.setattribute("name", station.name);//修改屬性
                                    f.setattribute("time", station.time.tostring());
                                    f.setattribute("uph", station.uph.tostring());
                                    xmlnodelist nls = f.childnodes;
                                    foreach(xmlnode no2 in nls)//修改第一級子節點
                                    {
                                        xmlelement g = (xmlelement)no2;
                                        if (g.name == "function")
                                        {
                                            g.innertext = station.func;
                                            continue;
                                        }
                                        if (g.name == "leader")
                                        {
                                            g.innertext = station.leader;
                                            continue;
                                        }
                                        if (g.name =="procstep")
                                        {
                                            g.innertext = station.proc;
                                            continue;
                                        }
                                        if(g.name=="set")
                                        {
                                            xmlnodelist h = g.childnodes;//修改第二級子節點
                                            g.removeall();
                                            foreach(keyvaluepair<string,int> kv in station.set)
                                            {
                                                    string dd = kv.key;
                                                    xmlelement xe5 = xmldoc.createelement(dd);
                                                    xe5.innertext = kv.value.tostring();
                                                    g.appendchild(xe5);
                                            }                                                             
                                       }
                                    }
                                   xmldoc.save(sett.pahxml);return true;
                                }else{return false;}
                            }else{return false;}
}

 

 

 

C#實現XML的增刪查改

 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://www.cnblogs.com/guxia/p/8242483.html