C#操作XML文件实例汇总
针对XML文件的操作是C#程序设计中非常常见的功能。本文即以实例展示了C#操作XML文件的几个常见的示例。具体如下:
1.返回节点下标
publicstaticXmlDocumentgetDoc(Stringpath)//加载xml文档 { XmlDocumentdoc=newXmlDocument(); doc.Load(path); returndoc; } ///<summary> ///返回找到的节点下标 ///</summary> ///<paramname="path">xml文件路径</param> ///<paramname="bname">书名</param> ///<returns></returns> publicstaticintgetPosition(Stringpath,stringnode,Stringbname) { inti; XmlDocumentdoc=newXmlDocument(); doc.Load(path); XmlNodeListnodeList=doc.SelectSingleNode(node).ChildNodes; for(i=0;i<nodeList.Count;i++) { if(nodeList[i].ChildNodes[0].InnerText==bname) { returni; } } return-1; }
2.遍历数据
///<summary> ///遍历数据 ///</summary> ///<paramname="sender"></param> ///<paramname="e"></param> protectedvoidbtnRead_Click(objectsender,EventArgse) { XmlDocumentdoc=getDoc("books.xml");//加载xml文档,books文件存放于 foreach(XmlElementrootindoc.DocumentElement.ChildNodes)//遍历根的子节点 { Response.Write("<script>document.write('<br/>');</script>"); Response.Write("<script>document.write('"+root.Name+"');</script>");//节点名root.Namebook foreach(XmlElementiteminroot.ChildNodes) { Response.Write("<script>document.write('"+item.Name+"'+':'+'"+item.InnerText+"');</script>");//输出节点名和文本节点的值 Response.Write("<script>document.write('<br/>');</script>"); } } }
3.查找
///<summary> ///查找 ///</summary> ///<paramname="path">文件路径</param> ///<paramname="node">节点</param> ///<paramname="bname">查找关键字</param> ///<returns>XmlNode</returns> publicstaticXmlNodeFind(stringpath,stringnode,stringbname) { XmlDocumentdoc=newXmlDocument(); doc.Load(path);//加载xml文档 XmlNodeListnodeList=doc.SelectSingleNode(node).ChildNodes; inti=getPosition(path,node,bname);// if(i>=0) returnnodeList[i]; else returnnull; }
4.删除节点
///<summary> ///删除元素、属性 ///</summary> ///<paramname="path">文件</param> ///<paramname="node">指定节点的父节点</param> ///<paramname="attribute">为空时删除节点,否则删除属性</param> ///<paramname="bname"></param> publicstaticvoidDelete(stringpath,stringnode,stringattribute,stringbname) { XmlDocumentdoc=newXmlDocument(); doc.Load(path); XmlNoderoot=doc.SelectSingleNode(node); XmlNodeListnodeList=doc.SelectSingleNode(node).ChildNodes; inti=getPosition(path,node,bname);//返回指定的节点下标 if(i>=0) { if(attribute.Equals("")) { root.RemoveChild(nodeList[i]); } else { XmlElementxn=(XmlElement)nodeList[i]; xn.RemoveAttribute(attribute); } } doc.Save(path); }
5.添加
///<summary> ///添加元素值 ///</summary> ///<paramname="path"></param> ///<paramname="node"></param> ///<paramname="element"></param> ///<paramname="value"></param> ///<paramname="i">插入的下标,如果为负,默认从最后一个节点插入</param> ///<returns></returns> publicstaticboolAdd(stringpath,stringnode,stringelement,stringvalue,inti) { XmlDocumentdoc=newXmlDocument(); doc.Load(path); XmlNodeListnodeList=doc.SelectNodes(node); XmlNodenewNode=doc.SelectSingleNode(node).LastChild; if(i<0||i>nodeList.Count-1)//如果小于0或者大于节点长度,默认从最后一个节点添加 { XmlElementnewElement=doc.CreateElement(element);//创建元素 newElement.InnerText=value;//赋值 newNode.AppendChild(newElement); } else { XmlElementnewElement=doc.CreateElement(element); newElement.InnerText=value; nodeList[i-1].AppendChild(newElement); } doc.Save(path); returntrue; }
希望本文所述方法对大家的C#程序设计能有所帮助。