当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net xml序列化与反序列化

ASP.NET
如何在ASP.NET中使用SmtpMail发送邮件
在VB.NET中利用Split和Replace函数计算字数
Attribute应用:简化ANF自定义控件初始化过程
ASP.NET 2.0移动开发入门之使用样式
ASP.NET 2.0中使用OWC生成图表
ASP.NET 2.0中控件的简单异步回调
一个无法捕获ADO.NET Dataset的内存错误
深入解读ADO.NET2.0的十大最新特性
.Net平台下的分布式缓存设计
ASP.NET全局异常处理浅析
ASP.NET 2.0中文验证码的实现
浅析.NET平台编程语言的未来走向
.net 框架程序设计收藏
使用ASP.NET MVC Futures 中的异步Action
详解.NET中的XmlReader与XmlWriter
关于.NET中的Server push技术
asp.net页面执行机制
对比JSP和ASP.NET的存储过程
.NET 4.0不会包含System.Shell.CommandLine
ASP.NET十个有效性能优化的方法

ASP.NET 中的 asp.net xml序列化与反序列化


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 159 ::
收藏到网摘: n/a

在.NET下有一种技术叫做对象序列化,它可以将对象序列化为二进制文件、XML文件、SOAP文件,这样, 使用经过序列化的流进行传输效率就得到了大大的提升。 在网上找了一些关于xml序列化与反序列化的资料,摘录下:
在.NET下有一种技术叫做对象序列化,它可以将对象序列化为二进制文件、XML文件、SOAP文件,这样, 使用经过序列化的流进行传输效率就得到了大大的提升。
在.NET中提供了两种序列化:二进制序列化、XML和SOAP序列化。对于WEB应用来说,用得最多的是第二种———XML和SOAP序列化。
XML 序列化将对象的公共字段和属性或者方法的参数和返回值转换(序列化)为符合特定 XML 架构定义 语言 (XSD) 文档的 XML 流。
XML 序列化生成强类型的类,并为存储或传输目的将其公共属性和字段转换为序列格式(在此情况下为
XML)。
注意:
1、XML 序列化不转换方法、索引器、私有字段或只读属性(只读集合除外)。
2、使用Serialize和Deserialize需要指明命令空间System.Xml.Serialization,using System.IO。
xml序列化简单的应用举例:
有个类定义为:
C#复制代码
public class webinfo
{
public string userName;
public string webName;
public string webUrl;
}
那么通过序列化我们可以将其序列化为: XML/HTML复制代码
<?xml version="1.0"?>
<webinfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<userName>软晨学习网</userName>
<webName>脚本</webName>
<webUrl>http://www.ruanchen.com</webUrl>
</webinfo>
主要的代码如下: C#复制代码
webinfo info = new webinfo();
info.userName = "软晨学习网";
info.webName = "脚本";
info.webUrl = "http://www.ruanchen.com";
//用webinfo这个类造一个XmlSerializer
XmlSerializer ser = new XmlSerializer(typeof(webinfo));
//xml保存路径,序列化成功后可以通过查看该文件看到序列化后结果
string path = Server.MapPath("webinfo.xml");
try
{
//Stream用于提供字节序列的一般视图,这里将在根目录下建立一个xml文件
Stream file = new FileStream(path, FileMode.Create, FileAccess.Write);
//把Stream对象和info一起传入,序列化出一个XML文件,如果没这一步,建立的xml内容为空
ser.Serialize(file, info);
//释放资源
file.Close();
file.Dispose();
Response.Write("序列化成功");
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
}
在.NET下有一种技术叫做对象序列化,它可以将对象序列化为二进制文件、XML文件、SOAP文件,这样, 使用经过序列化的流进行传输效率就得到了大大的提升。
反序列化就是读取xml文件并将其值自动匹配给类中的公有属性或方法或字段,也就是上面的逆操作。 C#复制代码
webinfo info = new webinfo();
//用webinfo这个类造一个XmlSerializer
XmlSerializer ser = new XmlSerializer(typeof(webinfo));
string path = Server.MapPath("webinfo.xml");
//Stream用于提供字节序列的一般视图,这里将打开一个xml文件
Stream file = new FileStream(path, FileMode.Open, FileAccess.Read);
//把字节序列(stream)反序列化
info = (webinfo)ser.Deserialize(file);
Response.Write("站长:" + info.userName + "<br>");
Response.Write("站名:" + info.webName + "<br>");
Response.Write("域名:" + info.webUrl);
输出结果:

为了更好的封装和保护类的成员和方法,我们将类webinfo改写成: 折叠展开C#复制代码
public class webinfo
{
//站长
private string userName;
public string UserName
{
get
{
return userName;
}
set
{
userName = value;
}
}
//站名
private string webName;
public string WebName
{
get
{
return webName;
}
set
{
webName = value;
}
}
//域名
private string webUrl;
public string WebUrl
{
get
{
return webUrl;
}
set
{
webUrl = value;
}
}
}
使用时区别仅仅是小小的改动具体的可以看下面: C#复制代码
webinfo info = new webinfo();
info.userName = "软晨学习网";-->info.UserName = "软晨学习网";
info.webName = "脚本"; -->info.WebName = "脚本";
info.webUrl = "http://www.ruanchen.com"; -->//自己写吧