前一篇讲了系列化有三种方法,分别是XML,SOAP,二进制.
XML的命名空间为:using System.Xml.Serialization;
SOAP的命名空间为:using System.Runtime.Serialization.Formatters.Soap;(必须添加 System.Runtime.Serialization.Formatters.Soap的引用)
,二进制的命名空间:using System.Runtime.Serialization.Formatters.Binary;
今天我们就一起来学习系列化的具体方法.
首先看一段代码:
XML的命名空间为:using System.Xml.Serialization;
SOAP的命名空间为:using System.Runtime.Serialization.Formatters.Soap;(必须添加 System.Runtime.Serialization.Formatters.Soap的引用)
,二进制的命名空间:using System.Runtime.Serialization.Formatters.Binary;
今天我们就一起来学习系列化的具体方法.
首先看一段代码:
// create a file stream to write the file
FileStream fileStream = new FileStream(@"C:/DoSum.xml", FileMode.Create);
sObj = this.BuildSumObj();
// use the CLR binary formatter
System.Xml.Serialization.XmlSerializer
formatter = new XmlSerializer(typeof(SumOf));
// serialize to disk
formatter.Serialize(fileStream, sObj);
fileStream.Close();
首先使用FileStream创建了个xml文件(添加using System.IO;),BuildSumObj()方法是给sObj加入0-9的数.代码如下:FileStream fileStream = new FileStream(@"C:/DoSum.xml", FileMode.Create);
sObj = this.BuildSumObj();
// use the CLR binary formatter
System.Xml.Serialization.XmlSerializer
formatter = new XmlSerializer(typeof(SumOf));
// serialize to disk
formatter.Serialize(fileStream, sObj);
fileStream.Close();
private SumOf BuildSumObj()
{
SumOf sObj = new SumOf();
for (int i = 0; i < 10; i++)
{
sObj.Members.Add(i);
}
sObj.Calculate();
return sObj;
}
SumOf是一个序列化的类,代码如下:{
SumOf sObj = new SumOf();
for (int i = 0; i < 10; i++)
{
sObj.Members.Add(i);
}
sObj.Calculate();
return sObj;
}
[Serializable]
public class SumOf
{
public SumOf()
{
}
public DecimalList Members = new DecimalList();
public decimal Sum, Avg;
public void Calculate()
{
this.Sum = 0;
foreach (decimal m in Members)
{
Sum += m;
}
this.Avg = Sum / Members.Count;
}
[Serializable]
public class DecimalList : List<decimal>
{
}
}
生成的结果如下:public class SumOf
{
public SumOf()
{
}
public DecimalList Members = new DecimalList();
public decimal Sum, Avg;
public void Calculate()
{
this.Sum = 0;
foreach (decimal m in Members)
{
Sum += m;
}
this.Avg = Sum / Members.Count;
}
[Serializable]
public class DecimalList : List<decimal>
{
}
}
<?xml version="1.0"?>
<SumOf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Members>
<decimal>0</decimal>
<decimal>1</decimal>
<decimal>2</decimal>
<decimal>3</decimal>
<decimal>4</decimal>
<decimal>5</decimal>
<decimal>6</decimal>
<decimal>7</decimal>
<decimal>8</decimal>
<decimal>9</decimal>
</Members>
<Sum>45</Sum>
<Avg>4.5</Avg>
</SumOf>
<SumOf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Members>
<decimal>0</decimal>
<decimal>1</decimal>
<decimal>2</decimal>
<decimal>3</decimal>
<decimal>4</decimal>
<decimal>5</decimal>
<decimal>6</decimal>
<decimal>7</decimal>
<decimal>8</decimal>
<decimal>9</decimal>
</Members>
<Sum>45</Sum>
<Avg>4.5</Avg>
</SumOf>
这个只是XML,其它的都雷同,在这里就不多说了.
在此感谢MSDN邵志东老师!
完整代码下载