淺談Visual Basic 9.0的XML字面量及后期綁定
Visual Basic 9.0 新特性都基于微軟的XLinq——新一代支持語言集成查詢的XML框架。使用XLinq可以按照XML邏輯樹狀對象模型來建立和訪問。關于XLinq我們不想過多介紹,有興趣的讀者可以參閱相關資料,我們要介紹的是,VB9為XLinq所做的驚人語法。
XML字面量
你有沒有想過在一種編程語言里創建XML可以達到多么簡單?Visual Basic 9.0支持直接XML文檔的原始結構作為字面量,也就是說,Visual Basic 9.0里可以直接寫:
以下是引用片段:
- Dim x = Mordern Operating Systems
這么寫,VB不僅僅吧它當作一個字符串,而是可以幫你做XML結構的檢查,而且編譯器了解這一XML的結構,因此會有智能感知的幫助。你可以將XML字面量分成多行編寫,直到遇到根元素的終結(例子中的)才判斷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)>
我們觀察一下上面的代碼,元素名稱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字面量中去了。其結果很顯然,是生成了下的列表。使用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元素
只要3個點,就可以把Books下邊所有層次的Book都找到,然后直接就可以遍歷。當然我們還可以用查詢包含,使用SQL語法來查詢XML文檔。總之,在Visual Basic 9.0中使用XML會是一種***的體驗。
現在Visual Basic 9.0的新特性已經介紹完了,這確實是一個有著巨大進步的版本,同時特別注重用戶體驗的改善,保持著簡單易用的特點。
【相關文章】