泛型实现不同类型的数据生成XML文件
除了配置文件外,很多时候我们需要使用到XML文档,并对其作一系列的操作。以下记录自己使用的一个小点,即将不同类型的数据生成对应的xml文档,使用时将其读出。仅适用初级人士,菜鸟级水平,请各大鸟手下留情。
首先定义一个类,实现两个方法,分别为写XML和读XML,注意类定义使泛型的使用。
代码如下:
<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> 示例完毕。
使用时,直接调用上面类里定义的方法,比如我需要写数据类型为int的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;
}
}
执行成功生成xml文档内容: <?xml version="1.0" encoding="gb2312"?>
try
{
string path = @"D:/myxml.xml"; //xml完整路径
int count = 100; //该xml数据
new XmlDAL<int>().WriteXml(path, count);
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
<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> 示例完毕。
顶(3)
踩(0)
- 最新评论