Visual Basic 9.0前沿播報動態(tài)篇的第三篇,也是這個系列的完結(jié)篇。按照慣例,我將Visual Basic 9.0最激動人心的部分放在了這一篇。在這一篇,我們將看到所有新特性作用在XML上之后帶來的革新性變化。
Visual Basic 9.0專門為XML集成設(shè)置了一個開發(fā)組,力求將XML語言與Visual Basic語言完全結(jié)合,使Visual Basic成為全行業(yè)對XML支持的開發(fā)工具。這些新特性都基于微軟的XLinq——新一代支持語言集成查詢的XML框架。使用XLinq可以按照XML邏輯樹狀對象模型來建立和訪問。本文不打算介紹XLink,有興趣可以下載這篇文檔 http://msdn.microsoft.com/VBasic/Future/XLinq%20Overview.doc。我要介紹的是,VB9為XLinq所做的驚人語法。
XML字面量
你有沒有想過在一種編程語言里創(chuàng)建XML可以達(dá)到多么簡單?VB9支持直接XML文檔的原始結(jié)構(gòu)作為字面量,也就是說,VB9里可以直接寫:
Dim x =Mordern Operating Systems
這么寫,VB不僅僅吧它當(dāng)作一個字符串,而是可以幫你做XML結(jié)構(gòu)的檢查,而且編譯器了解這一XML的結(jié)構(gòu),因此會有智能感知的幫助。你可以將XML字面量分成多行編寫,直到遇到根元素的終結(jié)(例子中的)才判斷XML字面量寫完,因此無須使用續(xù)行符。這也就是說,VB的XML可以表達(dá)一個以單元素為根的XML結(jié)構(gòu)片斷。如果XML字面量僅僅是這樣,就沒有多大意思了。我們可以讓這個XML字面量中的數(shù)據(jù)動態(tài)化:
Dim rootName = "Books"
Dim b As New Book {Author := "A. S. Tanenbaum", Title := "Mordern Operating Systems", ID := 20 }
Dim x = <(rootName)><%= b.Title %> >
我們觀察一下上面的代碼,元素名稱Books可以用變量來指定,只要在括號組成的“洞”填入即可,相應(yīng)的關(guān)閉標(biāo)記則變成>這很重要,因為元素名稱已經(jīng)是動態(tài)決定的了,所以引入特定寫法根據(jù)位置來關(guān)閉相應(yīng)標(biāo)記。我們看到,attribute的值也可以用洞來填入(attribute的名稱也可以用相同語法),但是標(biāo)記的Inner Text部分則不能使用洞,而是要使用<%= %>這種類似于ASP.NET數(shù)據(jù)綁定的語法,這稱為代碼嵌入。 這已經(jīng)很強(qiáng)大并且激動人心了,不是嗎?但還不夠,我們可以把查詢包含的語法嵌入到XML字面量中。假設(shè)我們有一組Book要生成:
Dim books = GetBooks() '假設(shè)用別的代碼生成了Book類型的集合
Dim x = _
<(rootName)>
<%= Select
<%= b.Title %>
From b In books Where b.ID > 5 %>
>
我們用代碼嵌入的手段,將類似于SQL的查詢包含直接插入到XML字面量中去了。其結(jié)果很顯然,是生成了下的列表。使用XML字面量,我們可以非常靈活地組合和生成我們想要得XML;也可以把XML直接拷貝粘貼到VB的IDE中,稍加修改而成為你自己的XML生成器。XML字面量還完善支持XML的namespace等特性。有了VB9,還需要XSLT嗎?難說……
XML后期綁定
現(xiàn)在我們有了生成XML的手段,那么訪問XML的手段呢?Visual Basic 9.0提供了XML后期綁定,我們可以用最簡單的語法來訪問XML。假設(shè)我們有剛才生成的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都找到,然后直接就可以遍歷。當(dāng)然我們還可以用查詢包含,使用SQL語法來查詢XML文檔。總之,在Visual Basic 9.0中使用XML會是一種前所未有的體驗。
現(xiàn)在Visual Basic 9.0的新特性已經(jīng)介紹完了,這確實是一個有著巨大進(jìn)步的版本,同時特別注重用戶體驗的改善,保持著簡單易用的特點。
Visual Basic 9.0專門為XML集成設(shè)置了一個開發(fā)組,力求將XML語言與Visual Basic語言完全結(jié)合,使Visual Basic成為全行業(yè)對XML支持的開發(fā)工具。這些新特性都基于微軟的XLinq——新一代支持語言集成查詢的XML框架。使用XLinq可以按照XML邏輯樹狀對象模型來建立和訪問。本文不打算介紹XLink,有興趣可以下載這篇文檔 http://msdn.microsoft.com/VBasic/Future/XLinq%20Overview.doc。我要介紹的是,VB9為XLinq所做的驚人語法。
XML字面量
你有沒有想過在一種編程語言里創(chuàng)建XML可以達(dá)到多么簡單?VB9支持直接XML文檔的原始結(jié)構(gòu)作為字面量,也就是說,VB9里可以直接寫:
Dim x =
這么寫,VB不僅僅吧它當(dāng)作一個字符串,而是可以幫你做XML結(jié)構(gòu)的檢查,而且編譯器了解這一XML的結(jié)構(gòu),因此會有智能感知的幫助。你可以將XML字面量分成多行編寫,直到遇到根元素的終結(jié)(例子中的)才判斷XML字面量寫完,因此無須使用續(xù)行符。這也就是說,VB的XML可以表達(dá)一個以單元素為根的XML結(jié)構(gòu)片斷。如果XML字面量僅僅是這樣,就沒有多大意思了。我們可以讓這個XML字面量中的數(shù)據(jù)動態(tài)化:
Dim rootName = "Books"
Dim b As New Book {Author := "A. S. Tanenbaum", Title := "Mordern Operating Systems", ID := 20 }
Dim x = <(rootName)>
我們觀察一下上面的代碼,元素名稱Books可以用變量來指定,只要在括號組成的“洞”填入即可,相應(yīng)的關(guān)閉標(biāo)記則變成>這很重要,因為元素名稱已經(jīng)是動態(tài)決定的了,所以引入特定寫法根據(jù)位置來關(guān)閉相應(yīng)標(biāo)記。我們看到,attribute的值也可以用洞來填入(attribute的名稱也可以用相同語法),但是標(biāo)記的Inner Text部分則不能使用洞,而是要使用<%= %>這種類似于ASP.NET數(shù)據(jù)綁定的語法,這稱為代碼嵌入。 這已經(jīng)很強(qiáng)大并且激動人心了,不是嗎?但還不夠,我們可以把查詢包含的語法嵌入到XML字面量中。假設(shè)我們有一組Book要生成:
Dim books = GetBooks() '假設(shè)用別的代碼生成了Book類型的集合
Dim x = _
<(rootName)>
<%= Select
From b In books Where b.ID > 5 %>
>
我們用代碼嵌入的手段,將類似于SQL的查詢包含直接插入到XML字面量中去了。其結(jié)果很顯然,是生成了
XML后期綁定
現(xiàn)在我們有了生成XML的手段,那么訪問XML的手段呢?Visual Basic 9.0提供了XML后期綁定,我們可以用最簡單的語法來訪問XML。假設(shè)我們有剛才生成的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都找到,然后直接就可以遍歷。當(dāng)然我們還可以用查詢包含,使用SQL語法來查詢XML文檔。總之,在Visual Basic 9.0中使用XML會是一種前所未有的體驗。
現(xiàn)在Visual Basic 9.0的新特性已經(jīng)介紹完了,這確實是一個有著巨大進(jìn)步的版本,同時特別注重用戶體驗的改善,保持著簡單易用的特點。