在项目中遇到对xml的操作,以前对这方面不太熟,最后在网上看了参考了一下资料,下面是自己写的一个操作xml的类,包含基本的增,删,改,查操作。

/**////<copyright>青岛英网咨询技术有限公司1999-2007</copyright>
///<version>1.0</version>
///<author>zhangl</author>
///<email>zhangl@hrbanlv.com</email>
///<logdate="2007-08-06">创建</log>

usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Xml;
usingSystem.Xml.XPath;
usingSystem.IO;
usingSystem.Data.SqlClient;


/**////<summary>
///XmlOperate的摘要说明
///</summary>
publicclassXmlOperate

...{
privatestringdatafile="";
privatestringid="";
privatestringdbname="";
privatestringbackdate="";

publicstringDataFile

...{

set...{
datafile=value;
}
}
publicstringID

...{
set

...{
id=value;
}
}
publicstringDbName

...{
set

...{
dbname=value;
}
}

publicstringBackDate

...{
set

...{
backdate=value;
}
}


/**////<summary>
///构造函数
///</summary>
publicXmlOperate()

...{

}


/**////<summary>
///构造带参数的构造函数
///</summary>
///<paramname="strdbname"></param>
///<paramname="strbackdate"></param>
///
publicXmlOperate(stringstrid,stringstrdbname,stringstrbackdate)

...{
this.id=strid;
this.dbname=strdbname;
this.backdate=strbackdate;
}



读xml操作#region读xml操作
publicDataViewXmlRead()

...{
StreamReadertyj=newStreamReader(datafile);//使用streamReader读取数据
XmlDataDocumentdatadoc=newXmlDataDocument();//创建该对象为了读取Xml
datadoc.DataSet.ReadXml(tyj);//使用xmldocument对象把读取的xml数据放到dataset
DataViewdv=datadoc.DataSet.Tables[0].DefaultView;
datadoc=null;//释放对象占用的资源
tyj.Close();
returndv;
}
#endregion



写xml操作#region写xml操作

publicboolXmlWrite()

...{

try

...{
if(File.Exists(datafile))

...{
XmlTextReaderxtr=newXmlTextReader(datafile);
XmlDocumentxd=newXmlDocument();
xd.Load(xtr);
xtr.Close();
XmlNodexn=xd.GetElementsByTagName("baks").Item(0);
XmlNodexn1=xd.CreateNode(XmlNodeType.Element,"bak","");
XmlNodexn2=xd.CreateNode(XmlNodeType.Element,"id","");
xn2.InnerText=id;
XmlNodexn3=xd.CreateNode(XmlNodeType.Element,"dbname","");
xn3.InnerText=dbname;
XmlNodexn4=xd.CreateNode(XmlNodeType.Element,"backdate","");
xn4.InnerText=backdate;
xn.AppendChild(xn1);
xn1.AppendChild(xn2);
xn1.AppendChild(xn3);
xn1.AppendChild(xn4);
xd.Save(datafile);
returntrue;
}
else

...{
FileStreamfs=File.Create(datafile);//创建xml文件
fs.Close();
StreamWritersw=newStreamWriter(datafile,true,System.Text.Encoding.GetEncoding("gb2312"));
XmlTextReaderxtr=newXmlTextReader(datafile);
XmlDocumentxd=newXmlDocument();
xd.Load(xtr);
xtr.Close();
XmlNodexn=xd.GetElementsByTagName("baks").Item(0);
XmlNodexn1=xd.CreateNode(XmlNodeType.Element,"bak","");
XmlNodexn2=xd.CreateNode(XmlNodeType.Element,"id","");
xn2.InnerText=id;
XmlNodexn3=xd.CreateNode(XmlNodeType.Element,"dbname","");
xn3.InnerText=dbname;
XmlNodexn4=xd.CreateNode(XmlNodeType.Element,"backdate","");
xn4.InnerText=backdate;
xn.AppendChild(xn1);
xn1.AppendChild(xn2);
xn1.AppendChild(xn3);
xn1.AppendChild(xn4);
xd.Save(datafile);
returntrue;
}
}
catch

...{
returnfalse;
}
}
#endregion


删除xml节点操作#region删除xml节点操作

publicvoidXmlDelete()

...{
XmlDocumentdocument=newXmlDocument();
document.Load(datafile);
XmlNodeListnodelist=document.SelectSingleNode("baks").ChildNodes;
foreach(XmlNodenodeinnodelist)

...{
XmlElementxe=(XmlElement)node;//将子节点类型转换为XmlElement类型
if(xe.Name=="bak")

...{
XmlNodeListnls=xe.ChildNodes;
foreach(XmlNodexn1innls)

...{
if(xn1.InnerText==dbname)

...{

xe.ParentNode.RemoveChild(xe);//移除xe节点--重点
}
}
}
}
document.Save(datafile);//保存xml文件
}
#endregion

}
下面是xml文件的内容:
<?xmlversion="1.0"encoding="utf-8"?>
<baks>
<bak>
<id>1</id>
<dbname>ehrdb_db_2007080713420096.BAK</dbname>
<backdate>2007.08.07</backdate>
</bak>
<bak>
<id>2</id>
<dbname>ehrdb_db_2007080713402905.BAK</dbname>
<backdate>2007.08.07</backdate>
</bak>
</baks>





















































































































































































































下面是xml文件的内容:












