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#程序设计能有所帮助。