首页 联系我 返回顶部
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
重点介绍一下xml的序列化
序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。反之,反序列化根据流重新构造对象。XML 序列化仅将对象的公共字段和属性值序列化为 XML 流。XML 序列化不包括类型信息。XML 序列化中最主要的类是 XmlSerializer 类,它的最重要的方法是 Serialize 和 Deserialize 方法。
如以下的xml文件
<?xml version="1.0"?>
<ModuleSettings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ConnectionString>server=CHARUL\NetSDK;database=ThePhile;uid=sa;pwd=;</ConnectionString>
  <NewsUrl>http://localhost/thephile/modules/newsmanager/shownews.aspx</NewsUrl>
  <AbstractLength>150</AbstractLength>
</ModuleSettings>

现在我要创建一个自定义类,该类有以下属性:ConnectionString/NewsUrl/AbstractLength,可以通过上面的属性直接访问该xml中的相应字段的值。
public class ModuleSettings
	{		
		private string connectionString;
		private string newsUrl;
		private int abstractLength;
		
		[XmlElement]
		public string ConnectionString
		{
			get { return connectionString; }
			set { connectionString = value; }
		}
		
		[XmlElement]
		public string NewsUrl
		{
			get { return newsUrl; }
			set { newsUrl = value; }
		}

		[XmlElement]
		public int AbstractLength
		{
			get { return abstractLength; }
			set { abstractLength = value; }
		}
	}

public class ModuleConfig
	{
		public static ModuleSettings GetSettings()
		{
			HttpContext context = HttpContext.Current;

			ModuleSettings data = (ModuleSettings)context.Cache["Settings"];

			if (data == null)
			{
                               //序列化的过程
				XmlSerializer serializer = new XmlSerializer(typeof(ModuleSettings));
				try
				{
					string fileName = HttpContext.Current.Server.MapPath(GetSettingsFile());
					FileStream fs = new FileStream(fileName, FileMode.Open);	          
					data = (ModuleSettings)serializer.Deserialize(fs);
					fs.Close();
					context.Cache.Insert("Settings", data, new CacheDependency(fileName));
				}
				catch (System.IO.FileNotFoundException)
				{
					data = new ModuleSettings();
				}
			}
			
			return data;
		}

               //反序列化,保存为xml文件
		public static void SaveSettings(ModuleSettings data)
		{
			string fileName = HttpContext.Current.Server.MapPath("xxx.xml");
			XmlSerializer serializer = new XmlSerializer (typeof(ModuleSettings));
			FileStream fs = new FileStream(fileName, FileMode.Create);
			serializer.Serialize(fs, data);
			fs.Close();
		}
}
		

这样我们可以调用GetSettings()方法得到ModuleSettings的一个实例,通过ModuleSettings的属性来访问xml文档中的相应节点的值.
更多的使用请参考.Net Framework 2.0 SDK

1 Responses

收起评论
  1. 不惊鸟 十一月 12 2006 , 15:11 #1
    不惊鸟
    GAD。。。

Write a comment:



(将显示你的Gravatar图标)  



[b][/b] - [i][/i] - [u][/u]- [quote][/quote]

:-/ ^_^ :d :o :kiss: :) :p :se: [yeah] :( :love: :han: :up: :cry: :zzz: o_o

暂时停止交换链接.

评论提交有问题?