JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » .Net Framework  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 VB 9.0 -- XML的深度支持
ray_linn

什么都不懂的小白

版主

發文: 540
積分: 10
於 2005-10-12 11:23 user profilesend a private message to usersend email to ray_linnreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
XML字面量

VB9支持直接XML文档的原始结构作为字面量,也就是说,VB9里可以直接写:

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


这么写,VB不仅仅吧它当作一个字符串,而是可以帮你做XML结构的检查,而且编译器了解这一XML的结构,因此会有智能感知的帮助。你可以将XML字面量分成多行编写,直到遇到根元素的终结(例子中的</Books>)才判断XML字面量写完,因此无须使用续行符。

这也就是说,VB的XML可以表达一个以单元素为根的XML结构片断。我们可以让这个XML字面量中的数据动态化:

1
2
3
4
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要生成:

1
2
3
4
5
6
7
8
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>的列表。这些新特性都基于微软的XLinq——新一代支持语言集成查询的XML框架。使用XLinq可以按照XML逻辑树状对象模型来建立和访问。有了VB9.0,XSLT还需要吗??

XML后期绑定

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

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


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

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


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


reply to postreply to post
飞翔的候鸟
話題樹型展開
人氣 標題 作者 字數 發文時間
2365 VB 9.0 -- XML的深度支持 ray_linn 1634 2005-10-12 11:23
» JWorld@TW »  .Net Framework

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8