快捷搜索:   服务器  PHP  安全  linux 安全  IIS

泛型实现不同类型的数据生成XML文件

       除了配置文件外,很多时候我们需要使用到XML文档,并对其作一系列的操作。以下记录自己使用的一个小点,即将不同类型的数据生成对应的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> 示例完毕。  
顶(3)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论