装配中的脑袋

用程序装配大脑,再用大脑装配程序
随笔 - 118, 评论 - 1214, 引用 - 11

导航

关于

如果想发较大的信件,请用Ninputer @ gmail.com

不要在我的Blog评论中张贴广告,除非同意向我付款。

标签

每月存档

最新留言

广告

 

本期是Visual Basic 9.0前沿播报动态篇的第三篇,也是这个系列的完结篇。按照惯例,我将Visual Basic 9.0最激动人心的部分放在了这一篇。在这一篇,我们将看到所有新特性作用在XML上之后带来的革新性变化。

Visual Basic 9.0专门为XML集成设置了一个开发组,力求将XML语言与Visual Basic语言完全结合,使Visual Basic成为全行业对XML支持最佳的开发工具。这些新特性都基于微软的XLinq——新一代支持语言集成查询的XML框架。使用XLinq可以按照XML逻辑树状对象模型来建立和访问。本文不打算介绍XLink,有兴趣可以下载这篇文档http://msdn.microsoft.com/VBasic/Future/XLinq%20Overview.doc。我要介绍的是,VB9为XLinq所做的惊人语法。

XML字面量

你有没有想过在一种编程语言里创建XML可以达到多么简单?VB9支持直接XML文档的原始结构作为字面量,也就是说,VB9里可以直接写:

Dim x = <Books><Book author="A. S. Tanenbaum">Mordern Operating Systems</Book></Books>

这么写,VB不仅仅吧它当作一个字符串,而是可以帮你做XML结构的检查,而且编译器了解这一XML的结构,因此会有智能感知的帮助。你可以将XML字面量分成多行编写,直到遇到根元素的终结(例子中的</Books>)才判断XML字面量写完,因此无须使用续行符。这也就是说,VB的XML可以表达一个以单元素为根的XML结构片断。如果XML字面量仅仅是这样,就没有多大意思了。我们可以让这个XML字面量中的数据动态化:

Dim rootName = "Books"
Dim b As New Book {Author := "A. S. Tanenbaum", Title := "Mordern Operating Systems", ID := 20 }

Dim x = <(rootName)><Book author=(b.Author)><%= b.Title %></Book></>

我们观察一下上面的代码,元素名称Books可以用变量来指定,只要在括号组成的“洞”填入即可,相应的关闭标记则变成</>这很重要,因为元素名称已经是动态决定的了,所以引入特定写法根据位置来关闭相应标记。我们看到,attribute的值也可以用洞来填入(attribute的名称也可以用相同语法),但是标记的Inner Text部分则不能使用洞,而是要使用<%= %>这种类似于ASP.NET数据绑定的语法,这称为代码嵌入。 这已经很强大并且激动人心了,不是吗?但还不够,我们可以把查询包含的语法嵌入到XML字面量中。假设我们有一组Book要生成:

Dim books = GetBooks() '假设用别的代码生成了Book类型的集合

Dim x = _
<(rootName)>
  <%= Select
    <Book author=(b.Author)><%= b.Title %></Book>
  From b In books Where b.ID > 5 %>
</>

我们用代码嵌入的手段,将类似于SQL的查询包含直接插入到XML字面量中去了。其结果很显然,是生成了<Books>下<Book>的列表。使用XML字面量,我们可以非常灵活地组合和生成我们想要得XML;也可以把XML直接拷贝粘贴到VB的IDE中,稍加修改而成为你自己的XML生成器。XML字面量还完善支持XML的namespace等特性。有了VB9,还需要XSLT吗?难说……

XML后期绑定

现在我们有了生成XML的手段,那么访问XML的手段呢?Visual Basic 9.0提供了XML后期绑定,我们可以用最简单的语法来访问XML。假设我们有刚才生成的Books文档,则可以用下列语法直接访问到它的某一个Book

Dim title = x.Books.Book(0).InnerText
Dim author = x.Books.Book.@author

这语法很类似于XPath,我们还可以做到XPath的//的功效:

For Each Dim book In x.Books...Book
    '遍历每一个Book元素
Next

只要3个点,就可以把Books下边所有层次的Book都找到,然后直接就可以遍历。当然我们还可以用查询包含,使用SQL语法来查询XML文档。总之,在Visual Basic 9.0中使用XML会是一种前所未有的体验。

现在Visual Basic 9.0的新特性已经介绍完了,这确实是一个有着巨大进步的版本,同时特别注重用户体验的改善,保持着简单易用的特点。

打印 | 张贴于 2005-10-12 09:23:00 | Tag:技术随笔  Visual Basic 9.0 前沿播报

留言反馈

#回复: Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定啊 编辑
真的吗?
2007-04-03 13:11:00 | [匿名:s]
#re: Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定啊 编辑
请问有vb6.0的视频教程没有呢?我是初学者,希望能给我点帮助,希望能下载.
2006-11-06 21:35:00 | [匿名:秋风蒲扇]
#re: Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定啊 编辑
看起来好像很不错哦...

如果VB.NET用这不习惯还是VB6好.

希望VB9的特性和VB6差不多就好咯~
2006-09-16 20:53:00 | [匿名:零号]
#re: Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定啊 编辑
有必要吗?还有Dim xx=。。。。这又不回到了6。0
2006-07-27 18:02:00 | [匿名:风中过客]
#re: Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定啊 编辑
gjhkjjl
2006-05-10 18:46:00 | [匿名:mn,]
#re: Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定啊 编辑
太棒了!!!
2006-03-28 16:56:00 | [匿名:timer]
#re: Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定啊 编辑
@妖居

那里刷屏比较快。。。
2005-10-14 08:00:00 | [匿名:Ninputer]
#re: Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定啊 编辑
great!
不过cnblog上面怎么没有对应的post了?还是我没有找到?
2005-10-13 16:56:00 | [匿名:妖居]
#re: Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定啊 编辑

这大概也是C#和VB.NET在定位上差别的开端
2005-10-12 21:35:00 | [匿名:sunmast]
#re: Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定啊 编辑
Cool
2005-10-12 14:44:00 | [匿名:DLU]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.2.0