引言
微软公司近期推出了C#程序设计语言引起业界的普遍关注。为什么有了VB,VC++,业界乂公认了J a v a,还要推出一个新的语言 C#能代替VB, VC++,成为微软统一的语言吗我们将以多大的关注去学习C#?这对于业界第一线软件开发者的确是个问题。我们已被各种描述语言(J s c dp t , VBS c r i p t ) ,置标语言(XML, eXML, HTML,SGML) ,模型语言(UML) ,体系结构描述语言(ADL)弄得不堪重负偏偏最肓接表述软件的编程语言又出了一个C#,殊知编程语言是专业程序员“找饭碗”的工具。
众所周知经常换语言滋味是不好受。这是因为无论什么语言既是表达工具也是思维工具习惯了某种语言的表达也就习惯了这种语言的思维范型。一旦习惯改起来就不舒服。几年前从C到C++,不少人编程序依然是DFD图 结构图过程模块最后凑出对象以C++表示。肓到相当一段时间之后才理解到00的开发好处。一遇到问题首先想到的是什么是对象她和对象如何交互直接用C++表达对象。
一个编程语言不断带来新的思维范形式好学的但是学不到软件开发新技术。正如ALGOL, C程序员学习FORTRAN和P a s c a l—样。仅仅学会了一种新的表示法从C++到C#却不是这样C#带来新的编程范型即从面向对象编程到Web服务编程。这中间有这个业界巨大的转变从分布式客户/服务器计算转向 “软件就是服务”的网络计算。后者把资源共享软件重用又提成到一个新的阶段租赁下载在Internet±进行。在ASP(应用服务提供者)提供的各式各样服务基础上业务系统的应用开发者几乎不用编制维护(升级纠错)软件就可以快速交付十分复杂的系统。而ASP用C#开发的Web服务也使大量的使用其它ASP提供的服务(当然也包括以Java,甚至C++提供的服务构件) 。
微软公司提供的Microsof t . NET就是为了完善新一代网络计算环境而C#是其屮的核心工具之一简单说是表达W'cb服务软件最方便的工具。然而微软在开发推行C#时又是非常稳健的。原因是网络计算还在纵深发展目前成功的应用如电子商务企业门户信息检索不过是网络计算最早期的成果C#还在不断试探中完善。
本文用C#实现XML编辑器XML是1998年2月在WWW (W3C: Wor ld Wide WebConso r t i um的不懈推动之下持续向前发展。起初许多开发者还嘲笑XML,认为它
只不过是编脚本的新方法而已。但那些常用数据库进行管理和开发的人员很快就意识到XML的潜力之所在XML会成为不需要任何专门的方法就能为团体之间提供数据服务的一种新的途径。
开发员开始把XML的一些片断融入到他们的桌面应用程序中有的用来存储配置数据有的作为输出文件。随着时间的推移他们开始把XML放到Internet上使数据库Z间开始通过XML进行通信。许多企业发现得益于XML,他们对外部数据的数据操作变得更加轻松了。
不过开发人员并不是唯一发现XML潜力的群体还有微软和那些让XML成为.NETFr amework基础的人士。 . NET的目标是在桌面应用程序与在线应用程序之间建立联系使其对象之间的通信变得更为方便。
第一章XML简介
第一节XML产生的背景
可扩展标记语言Extensive Markup Language- -简称XML,它同HTML 即超文木标记语言- -Hyper Text MarkupLanguage一样都是来自StandardGeneral izedMarkupLangu age,即标准通用标记语言简称SGML。 SGML是一种用标记来描述文档资料的通用语言它包含了一系列的文档类型定义简称DTD ,DTD中定义了标记的含义因而SGML的语法是可以扩展的。 SGML十分大既不容易学用不容易使用在计算机上实现也十分困难。鉴于这些因素 Web的发明者一欧洲核子物理研究中心的研究人员根据当时 1989年计算机技术的能力提出了HTML。
HTML只使用SGML中很小一部分标记。为了便于在计算机上实现HTML规定的标记是固定的既HTML语法是不扩展的它不需要包含DTDo HTML这种固定的语法是它易学易用在计算机上开发的浏览器也十分容易。正是由于HTML的简单性使Web技术从计算机界走向全社会Web的发展如日中天。
近年来随着的W e b应用越来越广泛和深入人们觉得HTML不够用1 HTML过去简单得愈发严重阻碍了用它来表现复杂的形式。尽管HTML推出了一个又一个新版本已经有了脚本•表格等表达功能但始终满足不了不断增长的需求。另一方面这几年来计算机技术的发展也十分迅速已经可以实现比当初发明创造HTML时复杂得多的Web浏览器所以开发一种新的Web页面语言是十分必要的也是可能的。
有人建议直接使用SGML作为W e b语言这固然能解决HTML遇到的困难。但是SGML太大了用户学•用不方便不说要全面实现SGML的浏览器就十分困难于是自然会想到仅使用SGML的子集使新的语言既方便实用又实现容易。正是在这种形势下标准化组织W 3 C建议使用一种精简的S GML版木一XML应运而生了。它继承了S GML重要的三个特性可扩展性结构化有效性成为表示结构化信息的一种标准文本格式⑸。
第二节XML的基本内容
XML文档XML标识语言成的XML原代码文件实际上是ASC I I的纯文本文
件,可以用No t cp ad创建和修改。XML文档的后缀名为.XML,用IE5.0以上浏览器可以直接打开并显示成树状结构看到的就是XML文档•一般来说,XML文档包含三个部分:a—个XML文档声明:<?xml version二"1 . 0〃 〉b一个关于文档类型的定义:<!DOCTYPE da t a SYSTEM "da t a. dt d〃>如不需要可以省略c.用XML标识创建的内容.
举例:
<?xml version二〃 1 .0〃 >
<books>
<book>
<author>Carson 〈 /author><price format=//dol larzz>31 .
95</price><pubdate>05/01/200l</pubdate>
</book><pubinfo>
<publ i sher>MSPress</pub1 i sher><state>WA</state>
</pubinfo>
</books>
文档对彖模型DOM类是XML文档的内存屮表示形式下图显示将此XML数据读入DOM结构中吋内存的构造。
图1 . 1 XML文档的树形结构
下面是XML中的有关概念
( 1 )Element (元素)
元素是组成XML文档的最小单位由标识来定义包括其中的内容如<author>Carson</author>,而且要由自己创建。元素可以包含元素也可以包含通常只用于文档中的文本的那些词和句子。在XML中这些文本叫做文档的字符数据。
标记语言方面的专业人员把他称作为文档的树型结构。包含所有元素的元素叫根元素。根元素所直接包含的那些元素叫做子元素。它们也可以包含它们自己的子元素。如果元素包含子元素我们叫他熟知。如果元素只包含字符数据我们叫它树叶
(2)At tribute (属性)
元素还可以具有属性属性是一种将特征或特性赋给文档元素的一种方式。例如 <price format= /dol lar z>31 . 95</price>其中format就是属性的名称, dol lar是属性值。属性值用单引号或双引号包围。
(3)Declarat ion (声明)
所有XML文档的第一行都有一个L声明表示是一个XML文档并指出遵循哪个版本的规范:<?xml version二〃 1 . 0〃 ?>说明是1 . 0版本的XML文档。
(4)Ent i ty(实体)
文档被定义为一个字符序列。一个处理器自始至终处理这个序列。提供了一种机制可以使文本非线性的组织也就是以多片的形式组织语法分析器可以重新变成线性结构。
“文木片”这个概念叫做实体。一个实体可以小到一个字符大到可以大到一本书的所有自负。
每个实体都有名字。在文档中可以通过插入实体应用来引用实体。处理器将用实体替换相应的实体引用这叫做文本替换。元素是描述文档的逻辑结构而实体是描述组成文档的那些字节块的位置我们把它称作文档的物理结构。
5 DTD文件类型定义 。
DTD是由元素类型属性符号和实体等一系列定义组成的一个集合。他明确规定在文档中哪些是合法的以及在哪些地方是合法的。一个文档可以在他的文档类型中说明它符合哪种特定的DTD。 文档类型通常所成因为首字母缩将和文
档类型定义类型相同 。
DTD文档包含元素的定义规则元素间关系的定义规则元素可使用的属性可使用的实体或符号规则。DTD文件也是一个ASC I I的文本文件后缀名为.d t do
一些文档并没有相应的文档类型说明但这并不是说它们就不符合相应的文档类型而是说它们没有声明符合某种定义的文档类型定义
6 Shape completely but legal i ty 形式完备而合法
在XML中 “在正确的地方使用正确的单词”叫做合法。它同文档类型密切相关所谓一个文档和法是指在文档类型说明中他声称符合某种DTD,并且事实上也符合该DTD。那些没有文档类型说明的文档并不是真正的非法他们没有违反他们的DTD,但也不能因为没有办法确定它们违反DTD而说明他们是违法的。
在创建一个形式完备而不合法的文档之前应该仔细考虑清楚。如果该文扌当类型只有唯一的一个文档并且文档很小那麽文档形式完备也许就够了。但如果它是信息系统即是很小的一部分或是一个大文挡那就应该为他一个DTD,
第三节XML语法基础
基本构成单元叫实体(ent i ty) ,包含解析的或未解析的数据.解析的数据由字符构成可以看成是标记由XML处理函数处理而未解析的字符数据被当成原始文本不被处理例如<name>Delfan</name>, <name>和〈 /name〉就是标记而Del fan是原始文本标记用来描述文件的存储结构(实体)和逻辑结构(元素) 。XML语法实际描述了用來定义XML文件的结构和布局的构造也包含了约束关系而XML需要XML处理函数来处理所以必须遵守严格的语法。
一个简单的例子
<?xml version二〃 1 . 0" encodin萨〃GB2312"?>
〈我的电话本〉
〈记录〉
〈姓名>Delfan</姓名〉
〈电了邮件>programer@21 cn. com</电了邮件〉
</记录〉
〈记录〉
〈姓名〉某某〈 /姓名〉
〈电子邮件>e@b. c 〈 /电子邮件〉
〈 /记录〉
〈 /我的电话本〉
一个XML文件只能有一个根而且XML是基于UNCODE编码的标记都可以是汉字•还有 I E本身就是个XML的解析器虽然不很完善。可以将以上代码到一个文本文件中例如文件名为t e s t , xm l ,双击TE就可以把这个XML文档解析成-棵树并按层次显示出来。⑻
第四节XML编辑器
现今的XML编辑器有多种多样例如XML Explorer (XML Edi t ion) 2. 6. 7, XMLSpy 5.0, XML Blueprint 2.2 , Bonodi XML Edi tion 2.0, XML DB Query
简体中文版,Easy XML, XML Generate 1 .0等等。
Bonodi XML Edi tor 2.0
一个适用于Microsoft Windows 98/Me/NT4/2000/XP的多语言XML编辑器。你可以用不同的语言编辑XML文档比如说英语、日语、汉语、韩语、西班牙语、法语、德语、俄语、希腊语、泰语、希伯莱语、阿拉伯语以及其它任何Windows所支持的语言
Easy XML
XML编辑/检查工具-Ea s y XML,支持QXML查询语言的结点选择文件可以以树状结构显示XSLT功能可以将XML转译成HTML。
XML Spy 5. 0
XML编辑器提供三种XML文档视图结构显示和编辑原码视图和支持CSS, XSL的预览。
XML Generate 1 .0
XML的结构与树控件结构非常相似木软件能够通过树控件的操作来产牛XML文件产生的文件可以用来给其他程序使用。树控件操作可以添加删除修改,拖放XML的读取及存储。
XML Blueprint 2.2
是一款专为Windows开发者而设计的XML编辑器高效易用。其主要功能包括浅显的文木编辑功能能编辑任何DTD文件XML图层整理即时XML色彩;XML目录设定无限制的undo/redo功能。
XML Explorer (XML Edi tor) 2. 6. 7
XML Exp l o r e r是一个XML和s chema编辑器、XML数据分析工具。它简单好用可以展现多个窗口。你可从树形图、列表、表格、文字模式和跳出式编辑区等方式操作任何XML数据。它copy and paste的功能让使用者复制任何XML文字到系统剪贴簿上然后贴到任何XML Expl orer窗口它支持双向Xpath,所以只要点任何XML节点或属性一个标准的Xp a t h就出来了。它两栏的文字展现方式方便比较和编辑。它的schema完全支持树形图、列表、集合观看模式、文字模式。有了它你还能轻易把微软Ex cek Acc e s s和任何ODBC数据转成XML格式。新版木增加了XML数据的图表与统计分析功能。
本软件的目的是要做一个编辑XML文挡的编辑器。由于XML文挡是树形结构的
所以在本软件中XML文挡就用TreeView控件显式显示出来TreeView也是树形结构的但TreeView控件允许有多个根节点需要对TreeView作一些限制另外TreeView控件只是将XML文档的树形结构显示出来但XML文档中各个节点的属性值和文木值不能在TreeView中显示出来所以要给TreeView中的每个节点赋一个指针指针所指的地址中存储着XML文档中对应节点的文本值和属性值。
这是实现XML编辑器的难点通过addxmlnode和dddt rccnodc函数可以完成打开文件保存文件的功能。以下是XML编辑器的界面
图1 .2 XML编辑器
该软件通过编辑按钮或工具栏里的箭头可以添加删除插入编辑结点通过更改按钮可以输入选定结点的文本值展性值展性名称通过更改完成按钮可以保存更改通过文件按钮可以打开保存新建另存退出功能。还可以通过工具栏的最后一个按钮察看把XML文件代码。
第二章Microsoft .Net中的C#
第一节・NET帄台
1 ・NET的简介
要介绍C#。就要先介绍一下C#所运行的帄台.NET o
我们正处于一个崭新的计算吋代一个互联网I 寸代。Internet应用开发新技术层出不穷,其中微软的.NET是近来最热门的技术之一因此也受到越来越多软件开发者和用户的关注。但.NET到底是什么大家对.NET帄台的看法和观点也不尽相同。
乌云数据主营高性价比国内外云服务器,物理机,本着机器为主服务为辅的运营理念,将客户的体验放在第一位,提供性价比最高的云服务器,帮助各位站长上云,同时我们深知新人站长的不易,特此提供永久免费虚拟主机,已提供两年之久,帮助了上万名站长从零上云官网:https://wuvps.cn迎国庆豪礼一多款机型史上最低价,续费不加价 尽在wuvps.cn香港cera机房,香港沙田机房,超低延迟CN2线路地区CPU...
RepriseHosting是成立于2012年的国外主机商,提供独立服务器租用和VPS主机等产品,数据中心在美国西雅图和拉斯维加斯机房。商家提供的独立服务器以较低的价格为主,目前针对西雅图机房部分独立服务器提供的优惠仍然有效,除了价格折扣外,还免费升级内存和带宽,商家支持使用支付宝或者PayPal、信用卡等付款方式。配置一 $27.97/月CPU:Intel Xeon L5640内存:16GB(原...
六一云 成立于2018年,归属于西安六一网络科技有限公司,是一家国内正规持有IDC ISP CDN IRCS电信经营许可证书的老牌商家。大陆持证公司受大陆各部门监管不好用支持退款退现,再也不怕被割韭菜了!主要业务有:国内高防云,美国高防云,美国cera大带宽,香港CTG,香港沙田CN2,海外站群服务,物理机,宿母鸡等,另外也诚招代理欢迎咨询。官网www.61cloud.net最新直销劲爆...