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

ASP.NET
[EnterpriseServices]利用assembly定义我们的组件在COM+中的注册方式
crystal reports for Visual Studio .NET(webformsample)
XML指南:微软的XML解析器
展现C# 清单5.10 生成exe文件执行的问题
vb.net 读写xml方法(1)
选择文件夹的对话框控件c#
特洛伊木马服务器源代码(C#)
上传图片画带阴影的水印.(C#)
vb.net读写xml(2)--实现datagrid与xml的沟通(原创)
列出所有的sheet,然后点击其中的一个,自动跳过去
从VB中的Datagride中向excel导入数据
XML指南:XML CDATA
XML指南:XML编码
XMLDOM对象方法:Document对象方法
XMLDOM对象方法:对象事件
XMLDOM对象方法:对象属性
[一个登录窗体的完整范例,包括登录,密码更改,输入错误三次退出]
[关于判断输入数据是否在数据库中的方法。]
[VBA]office中内建的faceid所对应的图标
web组件设计,利用接口(IPostBackDataHandler)产生数据回传的问题

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 295 ::
收藏到网摘: 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"; -->//自己写吧