淺談Visual Basic 9.0的XML字面量及后期綁定
Visual Basic 9.0 新特性都基于微軟的XLinq——新一代支持語(yǔ)言集成查詢的XML框架。使用XLinq可以按照XML邏輯樹(shù)狀對(duì)象模型來(lái)建立和訪問(wèn)。關(guān)于XLinq我們不想過(guò)多介紹,有興趣的讀者可以參閱相關(guān)資料,我們要介紹的是,VB9為XLinq所做的驚人語(yǔ)法。
XML字面量
你有沒(méi)有想過(guò)在一種編程語(yǔ)言里創(chuàng)建XML可以達(dá)到多么簡(jiǎn)單?Visual Basic 9.0支持直接X(jué)ML文檔的原始結(jié)構(gòu)作為字面量,也就是說(shuō),Visual Basic 9.0里可以直接寫(xiě):
以下是引用片段:
- Dim x = Mordern Operating Systems
這么寫(xiě),VB不僅僅吧它當(dāng)作一個(gè)字符串,而是可以幫你做XML結(jié)構(gòu)的檢查,而且編譯器了解這一XML的結(jié)構(gòu),因此會(huì)有智能感知的幫助。你可以將XML字面量分成多行編寫(xiě),直到遇到根元素的終結(jié)(例子中的)才判斷XML字面量寫(xiě)完,因此無(wú)須使用續(xù)行符。這也就是說(shuō),VB的XML可以表達(dá)一個(gè)以單元素為根的XML結(jié)構(gòu)片斷。如果XML字面量?jī)H僅是這樣,就沒(méi)有多大意思了。我們可以讓這個(gè)XML字面量中的數(shù)據(jù)動(dòng)態(tài)化:
以下是引用片段:
- Dim rootName = "Books"
- Dim b As New Book {Author := "A. S. Tanenbaum", Title := "Mordern Operating Systems", ID := 20 }
- Dim x = <(rootName)>
我們觀察一下上面的代碼,元素名稱Books可以用變量來(lái)指定,只要在括號(hào)組成的“洞”填入即可,相應(yīng)的關(guān)閉標(biāo)記則變成這很重要,因?yàn)樵孛Q已經(jīng)是動(dòng)態(tài)決定的了,所以引入特定寫(xiě)法根據(jù)位置來(lái)關(guān)閉相應(yīng)標(biāo)記。我們看到,attribute的值也可以用洞來(lái)填入(attribute的名稱也可以用相同語(yǔ)法),但是標(biāo)記的Inner Text部分則不能使用洞,而是要使用這種類似于ASP.net數(shù)據(jù)綁定的語(yǔ)法,這稱為代碼嵌入。 這已經(jīng)很強(qiáng)大并且激動(dòng)人心了,不是嗎?但還不夠,我們可以把查詢包含的語(yǔ)法嵌入到XML字面量中。假設(shè)我們有一組Book要生成:
以下是引用片段:
- Dim books = GetBooks() '假設(shè)用別的代碼生成了Book類型的集合
- Dim x = _
- <(rootName)>
- <%= Select
- <Book author=(b.Author)><%= b.Title %></Book>
- From b In books Where b.ID > 5 %>
- </>
我們用代碼嵌入的手段,將類似于SQL的查詢包含直接插入到XML字面量中去了。其結(jié)果很顯然,是生成了下的列表。使用XML字面量,我們可以非常靈活地組合和生成我們想要得XML;也可以把XML直接拷貝粘貼到VB的IDE中,稍加修改而成為你自己的XML生成器。XML字面量還完善支持XML的namespace等特性。有了VB9,還需要XSLT嗎?難說(shuō)……
XML后期綁定
現(xiàn)在我們有了生成XML的手段,那么訪問(wèn)XML的手段呢?Visual Basic 9.0提供了XML后期綁定,我們可以用最簡(jiǎn)單的語(yǔ)法來(lái)訪問(wèn)XML。假設(shè)我們有剛才生成的Books文檔,則可以用下列語(yǔ)法直接訪問(wèn)到它的某一個(gè)Book
以下是引用片段:
- Dim title = x.Books.Book(0).InnerText
- Dim author = x.Books.Book.@author
'這語(yǔ)法很類似于XPath,我們還可以做到XPath的//的功效:
For Each Dim book In x.Books...Book
'遍歷每一個(gè)Book元素
只要3個(gè)點(diǎn),就可以把Books下邊所有層次的Book都找到,然后直接就可以遍歷。當(dāng)然我們還可以用查詢包含,使用SQL語(yǔ)法來(lái)查詢XML文檔??傊赩isual Basic 9.0中使用XML會(huì)是一種***的體驗(yàn)。
現(xiàn)在Visual Basic 9.0的新特性已經(jīng)介紹完了,這確實(shí)是一個(gè)有著巨大進(jìn)步的版本,同時(shí)特別注重用戶體驗(yàn)的改善,保持著簡(jiǎn)單易用的特點(diǎn)。
【相關(guān)文章】