本文介绍C#使用泛型实现不同类型数据生成XML文件的方法,可以来学习下哦。
首先定义一个类,实现两个方法,分别为写XML和读XML,注意类定义使泛型的使用。
代码:
- public class XmlDAL<T> where T:new()
- {
- Encoding code = Encoding.GetEncoding("gb2312"); //编码类型
- public void WriteXml(string path, T obj)//path为包含文件名的XML文件完整路径,obj为数据类型
- {
- XmlSerializer mySerializer = new XmlSerializer(typeof(T));
- StreamWriter myWriter = new StreamWriter(path,false,code);
- mySerializer.Serialize(myWriter, obj);
- myWriter.Close();
- }
- public T ReadXml(string path)
- {
- T ob;
- XmlSerializer mySerializer = new XmlSerializer(typeof(T));
- TextReader myReader = new StreamReader(path,code);
- ob = (T)mySerializer.Deserialize(myReader);
- myReader.Close();
- return ob;
- }
- }
使用时,直接调用上面类里定义的方法,比如我需要写数据类型为int的xml文档,则:
- try
- {
- string path = @"D:/myxml.xml"; //xml完整路径
- int count = 100; //该xml数据
- new XmlDAL<int>().WriteXml(path, count);
- }
- catch (Exception ex)
- {
- Response.Write(ex.ToString());
- }
执行成功生成xml文档内容:
- <?xml version="1.0" encoding="gb2312"?>
- <int>100</int>
读取时,再调用XmlDAL里面的读xml方法即可:
- try
- {
- string path = @"D:/myFileName.xml";
- int count=0;
- count = new XmlDAL<int>().ReadXml(path);
- Response.Write(count);
- }
- catch (Exception ex)
- {
- Response.Write(ex.ToString());
- }
想要生成不同类型的数据,则直接将上面的int类型换成对应的类型,并设置好对应的数据即可。比如当前我有个实体列表List<tempClass>,则生成和读取代码如下:
首先定义一个类tempClass,注意添加[Serializable]。
- [Serializable]
- public class tempClass
- {
- public int id { get; set; }
- public string str1 { get; set; }
- public string str2{ get; set; }
- public string str3{ get; set; }
- }
初始化类,并用内容填充List<tempClass>:
- List<tempClass> tlist= new List<tempClass>();
- for (int i = 0; i < 5; i++)
- {
- tempClass mPro = new tempClass();
- mPro.id = i;
- mPro.str1 ="你好"+ i.ToString();
- mPro.str2= i.ToString()+"Hello!";
- mPro.str3= DateTime.Now.ToLocalTime().ToString();
- tlist.Add(mPro);
- }
调用方法生成xml文件:
- string path = @"D:/text.xml";
- new XmlDAL<List<tempClass>>().WriteXml(path, tlist);
读取:
- string path = @"D:/text.xml";
- List<Product> list = new XmlDAL<List<Product>>().ReadXml(path);
生成文档内容:
- <?xml version="1.0" encoding="gb2312"?>
- <ArrayOfTempClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <tempClass>
- <id>0</id>
- <str1>你好0</str1>
- <str2>0Hello!</str2>
- <str3>2010-4-4 15:52:54</str3>
- </tempClass>
- <tempClass>
- <id>1</id>
- <str1>你好1</str1>
- <str2>1Hello!</str2>
- <str3>2010-4-4 15:52:54</str3>
- </tempClass>
- <tempClass>
- <id>2</id>
- <str1>你好2</str1>
- <str2>2Hello!</str2>
- <str3>2010-4-4 15:52:54</str3>
- </tempClass>
- <tempClass>
- <id>3</id>
- <str1>你好3</str1>
- <str2>3Hello!</str2>
- <str3>2010-4-4 15:52:54</str3>
- </tempClass>
- <tempClass>
- <id>4</id>
- <str1>你好4</str1>
- <str2>4Hello!</str2>
- <str3>2010-4-4 15:52:54</str3>
- </tempClass>
- </ArrayOfTempClass>