說明:在微軟ado.Net 2.0版本中,還不能把整個xml文件映射到DataSet集中。也就是說,XML裝入到DataSet時,總是能成功,但是在修改了數據保存時,DataSet始終按默認的格式保存,當不符合這種格式的XML文件出現時,將寫為不合格的xml文件,因此許多網友反映,DataSet寫XML文件出錯。如果讀者要調式時,要看DataSet倒底輸出的XML文件是什麼樣子時,請以文件流的形式調用writeXML方法;如果用文件名的方式,vs直接報告出錯而無法查看。
微軟所默認的DataSet能准確無誤操作的XML格式是什麼樣的呢?
以數據庫映射為XML文件的觀點描述。
DataSet表示一個數據庫,對應著xml第一層;一個關系表的記錄對應xml第二層,一個記錄中的各列的值,對應第三層。如何區分表的呢?XML第二層中節點名稱對應著關系表。
即:
<?XML version="1.0" standalone="yes" ?>
<NewDataSet>
<表1> <!—表1的記錄1-->
<字段1>字段值</字段1>
<字段2>字段值</字段2>
</表1>
<表1> <!—表1的記錄2-->
<字段1>字段值</字段1>
<字段2>字段值</字段2>
</表1>
<表2><!—表2的記錄1-->
<字段1>字段值</
字段1>
<字段2>字段值</字段2>
</表2>
</NewDataSet>
Imports System.XML
Public Class Form1
Dim ds As DataSet ''公共變 量
Dim DataGrid1 As New DataGrid()
''要操作的xml文件路徑 Dim filepath As String = Application.StartupPath & "\mytest.XML"
''以下是DataSet裝載XML文件,並把dataset與DataGrid捆綁 顯示在窗體中
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
ds = New DataSet()
ds.ReadXML(filepath)
DataGrid1.Size = Me.Size
DataGrid1.DataSource = ds.Tables("item")’把XML中第二層的節點名為item作為表
Me.Controls.Add(DataGrid1) ''把datagrid加入到窗體中供顯 示
End Sub
''以下是DataSet保存數 據到XML
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
ds.WriteXML(filepath)
End Sub
End Class
----下面是操作的XML文件
<?XML version="1.0" standalone="yes" ?>
<NewDataSet>
<item>
<title>tiltle</title>
<description>hello aaa</description>
</item>
<item>
<title>111</title>
<description>222</description>
</item>
<student>
<no>11</no>
<name>zhang shan</name>
</student>
</NewDataSet>
說明:上面這個XML文件在映身到DataSet時,有兩個表:item與student.第一層有兩類節點,一類名字是item,另一類是student