Visual Basic.NET的出現大大改變了這個狀況,Visual Basic.NET提供了使用XML、XSL以及其他XML工具的完整工具,使用戶很輕松就能實現XML的應用,甚至,在不用編寫代碼的情況下操作XML。
ADO.NET是Microsoft新推出的.NET框架中用于數據訪問的組件,其最大的優(yōu)點就是使用XML作為傳送數據的標準,只要有一個XML文本,就可以讀入ADO.NET的組件中,然后ADO.NET再以XML格式傳給數據庫或者其他組件。
可以使用DataSet對象的ReadXML方法將一個XML文件讀入到DataSet中,這是一個重載的方法,有幾種語法格式,經常用到的如下所示:
其中,FileName為XML文檔的名字,現在將前面創(chuàng)建的XML文本“Personal.xml”讀入到DataSet中。新建一個項目,在窗體上創(chuàng)建一個Button和一個DataGrid控件,雙擊Button1輸入以下代碼:
Dim ds As New DataSet()
'讀入XML文檔 ds.ReadXml("personal.xml") Dim tb As DataTable Dim dv As DataView tb = ds.Tables(0) dv = New DataView(tb) Me.DataGrid1.DataSource = dv |
顯示結果如圖:
怎么樣?和剛才比起來,代碼量是不是少了很多,很容易就實現了XML文件的讀取呢?
.NET框架提供了操作XML文檔和數據的一組完整的類。XmlReader和XmlWriter對象以及這兩個對象的派生類提供了讀取XML和可選驗證XML的能力。XmlDocument和XMLSchema對象及其相關類代表了XML本身,而XslTransform和XMPathNavigator類分別支持XSL轉換(XSLT)和應XML路徑語言(XPath)查詢。
除了提供操作XML數據的外,XML標準還是.NET框 架中數據轉換和序列化的基礎。多數時候這些后臺進行,不過我們已經看到ADO.NET類型化數據集是使用XML架構表示的。
另外,ADO.NET數據集類對讀寫XML數據和架構提供直接支持,而且XmlDataDocument提供同步XML數據和關系ADO.NET數據集的能力,這樣就可以用XML和關系工具對數據的單個集合進行操作。
.NET框架公開了一個可用來直接對XML數據進行操作的類集。不過,如果需要使用關系操作(如排序、過濾或檢索相關行),數據集則提供了一個更簡便的機制。此外,XML類不支持數據綁定,所以如果要向用戶顯示數據,就必須使用數據集的XML方法。
幸運的是,將任何一個給定的數據集合作為XML層次結構或關系數據集相互并不排斥。
1.數據集支持的最直接的XML方法可能就是GetXml和GetXmlSchema了,這方法只將XML數據或XSD架構作為一個字符串值返回??梢杂靡韵麓a來實現:
Dim xmlstr As String xmlStr = Me.dsMasterl.GetXmlSchema() Me.tbResult.Text = xmlStr |
和
Dim xmlstr As String xmlStr = Me.dsMasterl.GetXml Me.tbResult.Text = xmlStr |
2. 數據集的ReadXmlSchema方法可從XSD架構定義或從XML加載數據集架構定義。
ReadXmlSchema支持4個版本的方法??梢詫⒘?、識別文件名的字符串、TextReader或XmlReader對象傳遞給方法。
ReadXmlSchema不加載任何數據,它只加載表、列和約束(鍵和關系)。如果數據集已經架構信息,新表、列和約束將在必要時添加到現有架構中。如果正讀取的架構中定義的對象與現有數據集架構沖突,那么ReadXmlSchema方法將會引發(fā)一個異常。
Dim newDS As New System.Data.DataSet() newDS.ReadXmlSchema("masterSchema.xsd") Me.daCategories.Fill(newDS.Tables("Categories")) Me.daproducts.Fill(newDS.Tables("Products")) SetBindings(newDS) |