说明:在微软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