VisualBasic9.0前沿播報·動態(tài)篇(三)XML字面量和XML后期綁定啊

字號:

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)步的版本,同時特別注重用戶體驗的改善,保持著簡單易用的特點。