ASP.NET网站制作之经由过程序列化和反序列化泛型数据实体汇合...
归根到底,Java跨平台可以,但是要重新编写代码,否则还分什么J2EE/J2SE/J2ME呢!工具|汇合|数据经由过程序列化和反序列化泛型数据实体汇合来完成耐久化数据工具的办法我们在平常利用数据库的时分,常常会碰着一个成绩,就是不但愿数据实体工具拔出数据库中,却有想耐久化的时分,那末就能够用序列化成
XML字符串,来保留到其他中央,因为天生的是字符串,以是能够保留就任意我们想保留的中央。好比asp.net的ViewState,cookie,cache等。
起首,我们界说一个数据实体类。
classEntity
{
publicEntity()
{}
privateintid;
publicintId
{
get
{
returnid;
}
set
{
id=value;
}
}
privatestringname;
publicstringName
{
get
{
returnname;
}
set
{
name=value;
}
}
privatedoubleprice;
publicdoublePrice
{
get
{
returnprice;
}
set
{
price=value;
}
}
}
因而将他拔出到List<Entity>工具中
List<Entity>list=newList<Entity>();
Entityobj=newEntity();
obj.Id=1;
obj.Name="test";
obj.Price=3.23;
list.Add(obj);
如许,一个List<Entity>工具就创立乐成了,上面我们来将他序列化
publicstaticstringSerialize<BusinessObject>(List<BusinessObject>GenericList)
{
XmlDocumentresult=newXmlDocument();
result.LoadXml("<Root></Root>");
foreach(BusinessObjectobjinGenericList)
{
XmlElementItem=result.CreateElement("Item");
PropertyInfo[]properties=obj.GetType().GetProperties();
foreach(PropertyInfopropertyinproperties)
{
if(property.GetValue(obj,null)!=null)
{
XmlElementelement=result.CreateElement(property.Name);
element.SetAttribute("Type",property.PropertyType.Name);
element.InnerText=property.GetValue(obj,null).ToString();
Item.AppendChild(element);
}
}
result.DocumentElement.AppendChild(Item);
}
returnresult.InnerXml;
}
然后我们挪用这个办法
stringstr=Serialize<Entity>(list);
天生的XML文件为:
<Root>
<Item>
<IdType="Int32">1</Id>
<NameType="String">test</Name>
<PriceType="Double">3.23</Price>
</Item>
</Root>
上面,我们依据下面天生的xml文件,将他反序列化,天生方才的List<Entity>工具
publicstaticList<BusinessObject>Deserialize<BusinessObject>(stringXmlStr)
{
List<BusinessObject>result=newList<BusinessObject>();
XmlDocumentXmlDoc=newXmlDocument();
XmlDoc.LoadXml(XmlStr);
foreach(XmlNodeItemNodeinXmlDoc.GetElementsByTagName("Root").Item(0).ChildNodes)
{
BusinessObjectitem=Activator.CreateInstance<BusinessObject>();
PropertyInfo[]properties=typeof(BusinessObject).GetProperties();
foreach(XmlNodepropertyNodeinItemNode.ChildNodes)
{
stringname=propertyNode.Name;
stringtype=propertyNode.Attributes["Type"].Value;
stringvalue=propertyNode.InnerXml;
foreach(PropertyInfopropertyinproperties)
{
if(name==property.Name)
{
property.SetValue(item,Convert.ChangeType(value,property.PropertyType),null);
}
}
}
result.Add(item);
}
returnresult;
}
然后我们挪用这个办法:
List<Entity>list=Deserialize<Entity>(str);
完了。
本文只是给人人先容了序列化List工具的复杂办法,用的时分要依据本人的情形而定。
在CSDN里搜索一下“初学”两字,竟有三百余篇帖子(也许更多)。有些帖子说,有了asp的基础,只要15天就能很熟悉了,我甚感自己的愚钝。更多帖子是向大家请教初学者适合看书。两个多月的时间(当然平常杂事比较多。 asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦! 但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。 在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的 ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
页:
[1]