自己写的针对xml操作的类
2007-08-08 11:32
363 查看
在项目中遇到对xml的操作,以前对这方面不太熟,最后在网上看了参考了一下资料,下面是自己写的一个操作xml的类,包含基本的增,删,改,查操作。
/**//// <copyright>青岛英网咨询技术有限公司 1999-2007</copyright>
/// <version>1.0</version>
/// <author>zhangl</author>
/// <email>zhangl@hrbanlv.com</email>
/// <log date="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
...{
private string datafile = "";
private string id="";
private string dbname = "";
private string backdate = "";
public string DataFile
...{
set ...{
datafile = value;
}
}
public string ID
...{
set
...{
id = value;
}
}
public string DbName
...{
set
...{
dbname = value;
}
}
public string BackDate
...{
set
...{
backdate = value;
}
}
/**//// <summary>
/// 构造函数
/// </summary>
public XmlOperate()
...{
}
/**//// <summary>
/// 构造带参数的构造函数
/// </summary>
/// <param name="strdbname"></param>
/// <param name="strbackdate"></param>
///
public XmlOperate(string strid,string strdbname, string strbackdate)
...{
this.id = strid;
this.dbname = strdbname;
this.backdate = strbackdate;
}
读xml操作#region 读xml操作
public DataView XmlRead()
...{
StreamReader tyj = new StreamReader(datafile); //使用streamReader读取数据
XmlDataDocument datadoc = new XmlDataDocument();//创建该对象为了读取Xml
datadoc.DataSet.ReadXml(tyj); //使用xmldocument对象把读取的xml数据放到dataset
DataView dv = datadoc.DataSet.Tables[0].DefaultView;
datadoc = null; //释放对象占用的资源
tyj.Close();
return dv;
}
#endregion
写xml操作#region 写xml操作
public bool XmlWrite()
...{
try
...{
if (File.Exists(datafile))
...{
XmlTextReader xtr = new XmlTextReader(datafile);
XmlDocument xd = new XmlDocument();
xd.Load(xtr);
xtr.Close();
XmlNode xn = xd.GetElementsByTagName("baks").Item(0);
XmlNode xn1 = xd.CreateNode(XmlNodeType.Element, "bak", "");
XmlNode xn2 = xd.CreateNode(XmlNodeType.Element, "id", "");
xn2.InnerText = id;
XmlNode xn3 = xd.CreateNode(XmlNodeType.Element, "dbname", "");
xn3.InnerText = dbname;
XmlNode xn4 = xd.CreateNode(XmlNodeType.Element, "backdate", "");
xn4.InnerText = backdate;
xn.AppendChild(xn1);
xn1.AppendChild(xn2);
xn1.AppendChild(xn3);
xn1.AppendChild(xn4);
xd.Save(datafile);
return true;
}
else
...{
FileStream fs = File.Create(datafile);//创建xml文件
fs.Close();
StreamWriter sw = new StreamWriter(datafile, true, System.Text.Encoding.GetEncoding("gb2312"));
XmlTextReader xtr = new XmlTextReader(datafile);
XmlDocument xd = new XmlDocument();
xd.Load(xtr);
xtr.Close();
XmlNode xn = xd.GetElementsByTagName("baks").Item(0);
XmlNode xn1 = xd.CreateNode(XmlNodeType.Element, "bak", "");
XmlNode xn2 = xd.CreateNode(XmlNodeType.Element, "id", "");
xn2.InnerText = id;
XmlNode xn3 = xd.CreateNode(XmlNodeType.Element, "dbname", "");
xn3.InnerText = dbname;
XmlNode xn4 = xd.CreateNode(XmlNodeType.Element, "backdate", "");
xn4.InnerText = backdate;
xn.AppendChild(xn1);
xn1.AppendChild(xn2);
xn1.AppendChild(xn3);
xn1.AppendChild(xn4);
xd.Save(datafile);
return true;
}
}
catch
...{
return false;
}
}
#endregion
删除xml节点操作#region 删除xml节点操作
public void XmlDelete()
...{
XmlDocument document=new XmlDocument();
document.Load(datafile);
XmlNodeList nodelist = document.SelectSingleNode("baks").ChildNodes;
foreach (XmlNode node in nodelist)
...{
XmlElement xe = (XmlElement)node;//将子节点类型转换为XmlElement类型
if (xe.Name == "bak")
...{
XmlNodeList nls = xe.ChildNodes;
foreach (XmlNode xn1 in nls)
...{
if (xn1.InnerText == dbname)
...{
xe.ParentNode.RemoveChild(xe); //移除xe节点--重点
}
}
}
}
document.Save(datafile); //保存xml文件
}
#endregion
}
下面是xml文件的内容:
<?xml version="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>
/**//// <copyright>青岛英网咨询技术有限公司 1999-2007</copyright>
/// <version>1.0</version>
/// <author>zhangl</author>
/// <email>zhangl@hrbanlv.com</email>
/// <log date="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
...{
private string datafile = "";
private string id="";
private string dbname = "";
private string backdate = "";
public string DataFile
...{
set ...{
datafile = value;
}
}
public string ID
...{
set
...{
id = value;
}
}
public string DbName
...{
set
...{
dbname = value;
}
}
public string BackDate
...{
set
...{
backdate = value;
}
}
/**//// <summary>
/// 构造函数
/// </summary>
public XmlOperate()
...{
}
/**//// <summary>
/// 构造带参数的构造函数
/// </summary>
/// <param name="strdbname"></param>
/// <param name="strbackdate"></param>
///
public XmlOperate(string strid,string strdbname, string strbackdate)
...{
this.id = strid;
this.dbname = strdbname;
this.backdate = strbackdate;
}
读xml操作#region 读xml操作
public DataView XmlRead()
...{
StreamReader tyj = new StreamReader(datafile); //使用streamReader读取数据
XmlDataDocument datadoc = new XmlDataDocument();//创建该对象为了读取Xml
datadoc.DataSet.ReadXml(tyj); //使用xmldocument对象把读取的xml数据放到dataset
DataView dv = datadoc.DataSet.Tables[0].DefaultView;
datadoc = null; //释放对象占用的资源
tyj.Close();
return dv;
}
#endregion
写xml操作#region 写xml操作
public bool XmlWrite()
...{
try
...{
if (File.Exists(datafile))
...{
XmlTextReader xtr = new XmlTextReader(datafile);
XmlDocument xd = new XmlDocument();
xd.Load(xtr);
xtr.Close();
XmlNode xn = xd.GetElementsByTagName("baks").Item(0);
XmlNode xn1 = xd.CreateNode(XmlNodeType.Element, "bak", "");
XmlNode xn2 = xd.CreateNode(XmlNodeType.Element, "id", "");
xn2.InnerText = id;
XmlNode xn3 = xd.CreateNode(XmlNodeType.Element, "dbname", "");
xn3.InnerText = dbname;
XmlNode xn4 = xd.CreateNode(XmlNodeType.Element, "backdate", "");
xn4.InnerText = backdate;
xn.AppendChild(xn1);
xn1.AppendChild(xn2);
xn1.AppendChild(xn3);
xn1.AppendChild(xn4);
xd.Save(datafile);
return true;
}
else
...{
FileStream fs = File.Create(datafile);//创建xml文件
fs.Close();
StreamWriter sw = new StreamWriter(datafile, true, System.Text.Encoding.GetEncoding("gb2312"));
XmlTextReader xtr = new XmlTextReader(datafile);
XmlDocument xd = new XmlDocument();
xd.Load(xtr);
xtr.Close();
XmlNode xn = xd.GetElementsByTagName("baks").Item(0);
XmlNode xn1 = xd.CreateNode(XmlNodeType.Element, "bak", "");
XmlNode xn2 = xd.CreateNode(XmlNodeType.Element, "id", "");
xn2.InnerText = id;
XmlNode xn3 = xd.CreateNode(XmlNodeType.Element, "dbname", "");
xn3.InnerText = dbname;
XmlNode xn4 = xd.CreateNode(XmlNodeType.Element, "backdate", "");
xn4.InnerText = backdate;
xn.AppendChild(xn1);
xn1.AppendChild(xn2);
xn1.AppendChild(xn3);
xn1.AppendChild(xn4);
xd.Save(datafile);
return true;
}
}
catch
...{
return false;
}
}
#endregion
删除xml节点操作#region 删除xml节点操作
public void XmlDelete()
...{
XmlDocument document=new XmlDocument();
document.Load(datafile);
XmlNodeList nodelist = document.SelectSingleNode("baks").ChildNodes;
foreach (XmlNode node in nodelist)
...{
XmlElement xe = (XmlElement)node;//将子节点类型转换为XmlElement类型
if (xe.Name == "bak")
...{
XmlNodeList nls = xe.ChildNodes;
foreach (XmlNode xn1 in nls)
...{
if (xn1.InnerText == dbname)
...{
xe.ParentNode.RemoveChild(xe); //移除xe节点--重点
}
}
}
}
document.Save(datafile); //保存xml文件
}
#endregion
}
下面是xml文件的内容:
<?xml version="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>
相关文章推荐
- 关于高德地图 自定义Marker使用自己的XMl布局的操作
- 自己写的一个JavaScript 操作XML 封装类
- C#针对xml基本操作及保存配置文件应用实例
- linq to xml操作XML,这是转的大神的,自己学习了,也希望你们也能学习一下
- 先记录一下自己最近的积累吧(XSL+XML导出及JS对XML的操作)
- XmlDocument中针对某Node的特定Attribute的清除操作说明
- 根据自己平时的经验写的针对SQLSERVER操作的通用类库
- [转]T-SQL操作XML,用于自己慢慢吸收
- 针对一个XML,如果不想使用任何第三方控件,只是使用wxString,设置属性可以用一下方法来操作
- python 操作XML和自己实现的xml解析器
- DOM4J 操作 XML的工具类,自己写的,感觉还比较好用
- 针对类似淘宝商户注册时用模板生成自己商铺网页的操作
- 关于高德地图 自定义Marker使用自己的XMl布局的操作
- xml操作(三)添加xml节点的子节点(针对上节的改进)
- asp.net操作XML
- 自己写的第一份build.xml
- 使用Jdom对xml文件进行基本操作
- 网上找来的RDLC报表打印实例,比较全面的实例,包括双面打印,XML操作等
- C++操作XML编程实例 转
- SqlServer2005 操作XML 实战