动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 软件工程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ 软件工程 ]的信息



本月文章推荐
.将SOA引入Office应用程序桌面.
.程序界面设计模式慨述.
.客户关系管理的三大纪律.
.SOA面向服务架构的原则.
.游戏项目中的自动化测试和持续集.
.SOA Software宣称独立于UDDI注册.
.UML组件图详解.
.“实现能力”与“设计能力”.
.跨平台的SOA实施工具BEA AquaLog.
.解决弹出窗口及AdWare.HBang(第.
.数据集成:让SOA稳着陆.
.面向服务的ms同SOA结合.
.从六个角度分析流程建模.
..Net体系结构指导.
.服务基础架构软件加速企业SOA实施.
.追求代码质量: 不要被覆盖报告所.
.Linux中的Ramdisk与Initrd.
.[j2me]二级菜单界面演练[二].
.SAP:未来管理软件将像玩具.
.WinCE.Net平台下电力巡检仪数据同.

解析.NET框架下的数据类型转化技术

发表日期:2008-3-23 |


解析.NET框架下的数据类型转化技术(图一)

  [前言]XML技术是微软.NET战略的一个重要基础,其在.NET开发中的作用自然是不言而喻的。随着XML Web服务的日益发展以及各种异构平台下数据交换的需求日益增加,XML逐渐在成为数据存储的一种重要方式。然而目前更多的数据是以关系型数据的方式存在的,这样将关系型数据转化为XML数据并进而呈现给最终用户成了开发人员的一项主要工作。.NET不仅以XML为基础,而且对XML标准有十分完美的支持。在.NET开发环境下,开发人员只要以很小的代价就可以达到数据类型转化并将数据以特定格式呈现给最终用户的目的。   基本原理:

  .NET框架中包含了一个专门用于处理XML的命名空间-System.Xml,其中包含了相当多的与XML相关的类。其子命名空间包括:System.Xml.Serialization,System.Xml.Schema,System.Xml.XPath,System.Xml.Xsl,这些子命名空间包含了与XML相关的更具体的类。其中的System.Xml和System.Xml.Xsl正是开发人员完成数据类型转化并以特定格式将数据呈现给最终用户所必须的命名空间,前者包括的XmlDataDocument类能从ADO.NET中的DataSet对象获取关系型数据并以XML的格式存储之,同时它是XmlDocument类的一个子类,所以是基于文档对象模型(DOM)的。而后者所包括的XslTransform类是完成XSLT转换的重要类,该类可以根据一个XmlDataDocument对象以及一个相应的XSLT文件完成XML数据格式的转换,也即它能将XML数据以Html的方式显示出来,这样就达到了以特定格式将XML数据呈现给最终用户的目的了。

  关系型数据转化为XML数据的过程中,我们运用了一个XmlDataDocument对象从DataSet对象中获取数据,其实这个过程是将XmlDataDocument对象和DataSet对象同步化的过程。一旦这两个对象被同步化了,那么对于任何一个对象的数据操作都会在另一个对象中反映出来。这样开发人员就可以同时运用XSLT技术以及ADO.NET相关的技术访问并操作数据了。同步化这两个对象的方法一般包括以下三种:

  1. 首先将一个XML文档导入到一个XmlDataDocument对象中,然后访问其DataSet属性。值得注重的是,在运用XmlDataDocument对象访问数据前必须设置好DataSet属性的模式,同时将数据表和列分别匹配到XML中相应的元素上。还有,模式是大小写敏感的。

  2. 先创建一个带有模式的DataSet对象,然后将一个XML文档直接导入到一个XmlDataDocument对象中并使之与前面的DataSet对象同步化。这种方式适合于XML文档非常大的情况,但是只要你把它和DataSet对象中的关系视图同步化,其中的元素也就和DataSet对象中的模式相对应起来了。

  3. 最简单的方法!根据一个已有的DataSet对象创建一个全新的XmlDataDocument对象。基本代码如下:
DataSet ds = new DataSet();
// 在此包含填充DataSet对象的代码
XmlDataDocument xmldd = new XmlDataDocument(ds); 更多的请看:http://www.QQread.com/windows/2003/index.html实例介绍

  下面我向大家介绍一个示例性的Asp.Net Web应用程序,该程序能从SQL Server 2000中的Northwind数据库中获取关系型数据并填充到一个DataSet对象中。该Web应用程序使用上面介绍的第三种方法同步化DataSet对象和XmlDataDocument对象,以完成从关系型数据到XML数据的转化工作。最后该Web应用程序根据一个预先编写好的XSLT文件实现从XML格式到HTML格式的数据转换,其中运用到的主要类便是XslTransform类。所以总体来看该Web应用程序并不复杂,不过它良好地体现了.NET框架下不同数据类型的转化方法和技巧,值得大家学习。   首先打开Visual Studio.Net,创建一个Visual C#的ASP.NET Web应用程序,如图1所示:

解析.NET框架下的数据类型转化技术(图二)
                图1   接着从SQL Server 2000的Northwind数据库中获取数据并填充到一个DataSet对象中。Northwind数据库中包含了一个Suppliers表和一个ProdUCts表,它们之间存在着一对多的关系,该关系以两个表中的SupplierID列为关联键。该关系能显示每个供给商所能供给的所有产品列表,假设该Web应用程序就是要显示这些信息,那么下面就是获取DataSet对象的方法了。
private DataSet GetDataSet()
{
try
{
// 创建SqlConnection对象、两个SqlDataAdapter对象以及一个DataSet对象
SqlConnection con = new SqlConnection("server=localhost;initial catalog=Northwind;integrated security=true;");
SqlDataAdapter daSuppliers = new SqlDataAdapter("SELECT * FROM Suppliers", con);
SqlDataAdapter daProducts = new SqlDataAdapter("SELECT * FROM Products", con);
DataSet ds = new DataSet("SuppliersProductsDS"); // 打开连接,并用上面的两个SqlDataAdapter对象填充DataSet对象,最后关闭连接
con.Open();
daSuppliers.Fill(ds, "Suppliers");
daProducts.Fill(ds, "Products");
con.Close(); // 在DataSet对象中添加必要的关系,该关系是一对多类型的
ds.Relations.Add("SuppliersProducts", ds.Tables["Suppliers"].Columns["SupplierID"], ds.Tables["Products"].Columns["SupplierID"]).Nested = true; // 返回DataSet对象
return ds;
}
catch (Exception)
{
return null;
}
}   上面的代码能将Northwind数据库中的Suppliers表和Products表的数据运用SqlDataAdapter对象的Fill()方法填充到一个DataSet对象中,然后在这两个数据表之间根据每个表中的SupplierID列建立一个一对多关系。

  现在,你已经从后台数据库中获取数据并填充到DataSet对象了,不过要根据DataSet对象格式化输出结果是比较困难的,除非你使用像DataGrid那样的数据绑定控件。然而使用该类控件将使得输出结果的显示方式不富于变化,那也就可能不能满足应用程序的需求了。于是,你得先将数据格式转化为XML格式并运用XSLT技术将数据以HTML的方式显示给最终用户。所以,下面先得创建一个XSLT样式表文件。为该项目添加一个新项,如图2所示:

解析.NET框架下的数据类型转化技术(图三)     
                图2   样式表文件自身就是一个XML文件,其中包含了一个或多个XSLT模板。这些模板能根据其中的指令对源XML文件中的元素进行逐个处理并生成相应结果。编辑该样式表文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="SuppliersProductsDS">
<HTML>
<HEAD>
<TITLE>XmlDataDocument Transformation!</TITLE>
</HEAD>
<STYLE>
BODY{ font-family:verdana;font-size:9pt }
TD { font-size:8pt }
</STYLE>
<BODY>
<xsl:apply-templates select="Suppliers"></xsl:apply-templates>
</BODY>
</HTML>
</xsl:template>

<xsl:template match="Suppliers">
<TABLE>
<TR><TD>
<B>
<xsl:value-of select="CompanyName"></xsl:value-of>
<xsl:value-of select="Phone"></xsl:value-of>
</B>
</TD></TR>
</TABLE>
<xsl:apply-templates select="Products"></xsl:apply-templates>

</BR>
</xsl:template>

<xsl:template match="Products">
<TABLE BORDER="1">
<TR>
<TD valign="top" bgcolor="#E0E0E0">
<B>Product:</B>
</TD>
<TD valign="top">
<xsl:value-of select="ProductName"></xsl:value-of>
</TD>
</TR>
<TR>
<TD valign="top" bgcolor="#E0E0E0">
<B>QuantityPerUnit:</B>
</TD>
<TD valign="top">
<xsl:value-of select="QuantityPerUnit"></xsl:value-of>
</TD>
</TR>
<TR>
<TD valign="top" bgcolor="#E0E0E0">
<B>UnitPrice:</B>
</TD>
<TD valign="top">
<xsl:value-of select="UnitPrice"></xsl:value-of>
</TD>
</TR>
</TABLE>
</xsl:template>
</xsl:stylesheet>   最后便是根据上面创建并填充的DataSet对象创建一个新的XmlDataDocument对象,然后根据样式表文件将XML数据转换为HTML格式的数据并呈现给最终用户。XSLT转换过程涉及到三个文件:一个为源XML文件,它是被处理的对象;一个样式表文件,它是XSLT转换的工具;还有一个就是输出结果文件。XSLT转换过程运用到了XslTransform类的Load()方法和Transform()方法,其作用分别是导入样式表和进行实际的转换。下面,添加Web页面的Load事件响应函数如下:
private void Page_Load(object sender, System.EventArgs e)
{
try
{
// 根据一个已有的DataSet对象创建一个新的XmlDataDocument对象
DataSet ds = this.GetDataSet();
XmlDataDocument xdd = new XmlDataDocument(ds); // 创建一个XslTranform对象并导入XSLT样式表文件
XslTransform xslt = new XslTransform();
xslt.Load(Server.MapPath("SuppliersProducts.xslt")); // 进行XSLT转换并输出结果到一个流对象
MemoryStream ms = new MemoryStream();
xslt.Transform(xdd, null, ms);
ms.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(ms); // 显示输出结果
Response.Write(sr.ReadToEnd());
}
catch (Exception) {}
}   运行该Web应用程序的结果如图3所示:

解析.NET框架下的数据类型转化技术(图四)
             图3   总结

  以上我向大家阐述了.NET框架下数据类型转化的基本方法和技巧,其中的Web应用程序从后台数据库中获取了关系型的数据并根据DataSet对象和XmlDataDocument对象的同步化原理将数据转化为了XML类型的数据,最后它还运用到了XSLT技术将XML数据以HTML的格式呈现给最终用户,所以该实例良好地体现了.NET框架下与数据转化相关的技术,不失为一个好例子。最后,希望本文能对大家有不少帮助!

上一篇:Project 2000进行项目管理(一) 人气:216
下一篇:软件项目管理中的风险管理研究 人气:198
浏览全部软件工程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-8 ECShop v2.6.0 Build 20080707(G
2008-7-8 动网论坛PHP版 v2.0++ Build 080
2008-7-8 中国IT总舵 v9.0 UTF版
2008-7-8 凹丫丫新闻发布系统 v4.6 Build
2008-7-8 topview数据查询 v3.0
2008-7-8 Z-Blog v1.8 Spirit Build 80708
2008-7-8 Z-Blog v1.8 Spirit Build 80708
2008-7-8 凹丫丫新闻发布系统 v4.6 Build
2008-7-8 新动软万能网站内容管理cms系统
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報