自己写的针对xml操作的类

本文介绍了一个用于操作XML文件的类的实现,包括读取、写入、修改和删除等基本功能,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中遇到对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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值