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;}
}
https://www.cnblogs.com/guxia/p/8242483.html
上一篇: 一进来就看见两个表单有关问题,其实小弟我也是冲着表单有关问题来的呀
下一篇: 爱心狗狗好可爱