热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> .Net编程>>正文内容

C#使用泛型编程实现数据生成XML文件示例

发布时间:2010年04月05日点击数: 佚名

本文介绍C#使用泛型实现不同类型数据生成XML文件的方法,可以来学习下哦。
首先定义一个类,实现两个方法,分别为写XML和读XML,注意类定义使泛型的使用。
代码:

  1. public class XmlDAL<T> where T:new() 
  2.     Encoding code = Encoding.GetEncoding("gb2312");  //编码类型 
  3.  
  4.     public void WriteXml(string path, T obj)//path为包含文件名的XML文件完整路径,obj为数据类型   
  5.     { 
  6.         XmlSerializer mySerializer = new XmlSerializer(typeof(T)); 
  7.         StreamWriter myWriter = new StreamWriter(path,false,code); 
  8.         mySerializer.Serialize(myWriter, obj); 
  9.         myWriter.Close(); 
  10.     } 
  11.  
  12.     public T ReadXml(string path) 
  13.     { 
  14.         T ob; 
  15.         XmlSerializer mySerializer = new XmlSerializer(typeof(T)); 
  16.         TextReader myReader = new StreamReader(path,code); 
  17.         ob = (T)mySerializer.Deserialize(myReader); 
  18.         myReader.Close(); 
  19.         return ob; 
  20.     } 

使用时,直接调用上面类里定义的方法,比如我需要写数据类型为int的xml文档,则:

  1. try 
  2.       string path = @"D:/myxml.xml";  //xml完整路径 
  3.     int count = 100;                     //该xml数据 
  4.     new XmlDAL<int>().WriteXml(path, count); 
  5. catch (Exception ex) 
  6.        Response.Write(ex.ToString()); 

执行成功生成xml文档内容:

  1. <?xml version="1.0" encoding="gb2312"?> 
  2. <int>100</int>  

读取时,再调用XmlDAL里面的读xml方法即可:

  1. try 
  2.         { 
  3.             string path = @"D:/myFileName.xml"
  4.             int count=0; 
  5.             count = new XmlDAL<int>().ReadXml(path); 
  6.             Response.Write(count); 
  7.         } 
  8.         catch (Exception ex) 
  9.         { 
  10.             Response.Write(ex.ToString()); 
  11.         } 

想要生成不同类型的数据,则直接将上面的int类型换成对应的类型,并设置好对应的数据即可。比如当前我有个实体列表List<tempClass>,则生成和读取代码如下:

首先定义一个类tempClass,注意添加[Serializable]。

  1. [Serializable] 
  2. public class tempClass 
  3.     public int id { getset; } 
  4.     public string str1 { getset; } 
  5.     public string str2{ getset; } 
  6.     public string str3{ getset; } 

初始化类,并用内容填充List<tempClass>:

  1. List<tempClass> tlist= new List<tempClass>(); 
  2.            for (int i = 0; i < 5; i++) 
  3.            { 
  4.                tempClass mPro = new tempClass(); 
  5.                mPro.id = i; 
  6.                mPro.str1 ="你好"+ i.ToString(); 
  7.                mPro.str2= i.ToString()+"Hello!"
  8.                mPro.str3= DateTime.Now.ToLocalTime().ToString(); 
  9.                tlist.Add(mPro); 
  10.            } 

调用方法生成xml文件:

  1. string path = @"D:/text.xml"
  2.             new XmlDAL<List<tempClass>>().WriteXml(path, tlist); 

读取:

  1. string path = @"D:/text.xml"
  2.             List<Product> list = new XmlDAL<List<Product>>().ReadXml(path); 

生成文档内容:

  1. <?xml version="1.0" encoding="gb2312"?> 
  2. <ArrayOfTempClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
  3.   <tempClass> 
  4.     <id>0</id> 
  5.     <str1>你好0</str1> 
  6.     <str2>0Hello!</str2> 
  7.     <str3>2010-4-4 15:52:54</str3> 
  8.   </tempClass> 
  9.   <tempClass> 
  10.     <id>1</id> 
  11.     <str1>你好1</str1> 
  12.     <str2>1Hello!</str2> 
  13.     <str3>2010-4-4 15:52:54</str3> 
  14.   </tempClass> 
  15.   <tempClass> 
  16.     <id>2</id> 
  17.     <str1>你好2</str1> 
  18.     <str2>2Hello!</str2> 
  19.     <str3>2010-4-4 15:52:54</str3> 
  20.   </tempClass> 
  21.   <tempClass> 
  22.     <id>3</id> 
  23.     <str1>你好3</str1> 
  24.     <str2>3Hello!</str2> 
  25.     <str3>2010-4-4 15:52:54</str3> 
  26.   </tempClass> 
  27.   <tempClass> 
  28.     <id>4</id> 
  29.     <str1>你好4</str1> 
  30.     <str2>4Hello!</str2> 
  31.     <str3>2010-4-4 15:52:54</str3> 
  32.   </tempClass> 
  33. </ArrayOfTempClass> 

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作