自己写的针对xml操作的类

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

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


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

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

public class XmlOperate
... {
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 >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值