C#发现之旅第三讲 使用C#开发基于XSLT的代码生成器(2)

在本演示程序中,我们只是用程序目录下的一个Access2000数据库作为例子,因此也只调 用了LoadFromAccesss2000这个函数,其他的分析SQLSERVER和ORACLE的函数没用到。在未来 当这个代码生成器经过改善而投入实际应用时,它就能分析SQLSERVER和ORACLE等企业级数据 库了。

在主页面xslcreatecode.aspx中定义了一个GetXMLString函数,它能将一个对象 序列化成一个XML文档。这里的DataBaseInfo,TableInfo和FieldInfo都能XML序列化。在执 行XML序列化时,系统会分析对象类型,遍历对象所有的公开字段和可读写属性,然后将这些 属性值输出到XML文档,若遇到对象树状结构,则会递归遍历这个树状结构,对对象中的每一 个下属对象都会建立一个XML子元素进行输出。在这里DataBaseInfo,TableInfo和FieldInfo 构成了三层的树状结构,因此生成的XML文档也是多层次的。

一般来说,序列化生成 的XML文档中,XML元素的名称等于对象类型的名称和公开字段属性的名称,但可以通过添加 特性来改变这种默认行为,在类型TableInfo的定义前面加上了特性XmlType,在这里指明了 为类型TableInfo生成的XML元素名称不是对象类型名称TableInfo,而是Table。

[System.Xml.Serialization.XmlType("Table")]
public class TableInfo

同样的方式,我们为类型FieldInfo指定了XML元素名称为Field ,这里展示了特性在C#中的应用。关于特性在未来的某节课程中将讲到。

由于能执行 XML序列化的属性必须是可读写的,因此在类型FieldInfo中的IsString,IsInteger等属性为 了能执行XML序列化,因此定义了毫无作用的set方法。

XSLT模板说明

程序目录下 放置了一些以下划线开头的扩展名为XSLT的文件,这就是代码生成器使用的代码生成模板。 在主界面中使用不同的模板就能生成不同的代码。在这里我们以_cshaprhashtable.xslt为例 子进行说明。

_cshaprhashtable.xslt

首先我们在界面中选择数据表Customers, 可以生成它的XML代码为.

<Table xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Name>Customers</Name>
  <Fields>
    <Field>
     <Name>Address</Name>
     <Remark>地址</Remark>
     <FieldType>Char</FieldType>
     <IsString>true</IsString>
     <IsInteger>false</IsInteger>
     <IsBoolean>false</IsBoolean>
     <IsNumberic>false</IsNumberic>
     <IsDateTime>false</IsDateTime>
     <IsBinary>false</IsBinary>
     <ValueTypeName>System.String</ValueTypeName>
     <FieldWidth>60</FieldWidth>
     <Nullable>true</Nullable>
     <PrimaryKey>false</PrimaryKey>
     <Indexed>false</Indexed>
   </Field>
    <Field>
     <Name>City</Name>
     <Remark>城市</Remark>
     <FieldType>Char</FieldType>
     <IsString>true</IsString>
     <IsInteger>false</IsInteger>
     <IsBoolean>false</IsBoolean>
     <IsNumberic>false</IsNumberic>
     <IsDateTime>false</IsDateTime>
     <IsBinary>false</IsBinary>
     <ValueTypeName>System.String</ValueTypeName>
     <FieldWidth>15</FieldWidth>
     <Nullable>true</Nullable>
     <PrimaryKey>false</PrimaryKey>
     <Indexed>false</Indexed>
   </Field>
    <Field>其他字段....</Field>
  </Fields>
</Table>

时间: 2024-09-11 02:31:46

C#发现之旅第三讲 使用C#开发基于XSLT的代码生成器(2)的相关文章

C#发现之旅第三讲 使用C#开发基于XSLT的代码生成器(1)

为了让大家更深入的了解和使用C#,我们开始这一系列的主题为"C#发现之旅 "的技术讲座.考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用.目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程.在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力. 本课程说明 经过

C#发现之旅:WinForm.NET中开发具有固定背景图片的可滚动控件

在WinForm.NET开发中,可以使用一个Panel或UserControl作为一个带滚动条的容器放置 图形或其他控件.我们可以设置控件的BackgroundImage属性来设置控件的背景图片,但这个 背景图片是会随着控件内容的滚动而滚动的,而且还出现背景破碎的不良效果.现笔者在开 发实践中遇到控件的背景图片不随着控件的滚动而滚动. 在B/S开发中,开发者可以 使用"background-attachment:fixed"的CSS样式来固定HTML文档的背景图片, 使之不随着内容的滚

C#发现之旅第十讲 文档对象模型

为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为"C#发现之旅 "的技术讲座.考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用.目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程.在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力. 课程说明 本

C#发现之旅第九讲 ASP.NET验证码技术

为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为"C#发现之旅 "的技术讲座.考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用.目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程.在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力. 本系列课程配套

C#发现之旅第八讲 ASP.NET图形开发带超链接的饼图

为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为"C#发现之旅 "的技术讲座.考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用.目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程.在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力. 本系列课程配套

C#发现之旅第七讲 C#图形开发高级篇

为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为"C#发现之旅 "的技术讲座.考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用.目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程.在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力. 本系列课程配套

C#发现之旅第六讲 C#图形开发中级篇

为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为"C#发现之旅 "的技术讲座.考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用.目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程.在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力. 本文配套源码,

C#发现之旅第五讲 图形开发基础篇

为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为"C#发现之旅 "的技术讲座.考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用.目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程.在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力. 本文配套源码,

C#发现之旅第四讲 Windows图形开发入门

为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为"C#发现之旅 "的技术讲座.考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用.目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程.在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力. 本次课程说明