14.3.8 DataSet与XML的交互
XML是目前传输数据的最佳格式,有关它的基础知识将会在第15章介绍,对XML不熟悉的读者可以先学习第15章,再学习本节内容。ADO.NET对XML提供了强大的支持,它主要通过DataSet与XML进行交互。DataSet中提供了很多方法来支持对XML的操作,如表14-6所示。
![]() |
图14-28 运行结果图 |
![]() |
图14-29 导航后的结果 |
表14-6 DataSet中支持XML的方法列表
方 法 名 |
说 明 |
GetXml() |
返回存储在DataSet中的数据的XML形式 |
GetXmlSchema() |
返回存储在DataSet中的数据的XML形式的XML架构 |
InferXmlSchema() |
将指定文件中的XML架构应用于DataSet |
ReadXml() |
将XML架构和数据读入到DataSet |
ReadXmlSchema() |
将XML架构读入到DataSet |
WriteXml() |
将DataSet中的数据写入到指定的文件,还可以通过选择参数WriteSchema将架构一起写入 |
WriteXmlSchema() |
将XML架构形式的DataSet结构写入到指定文件 |
下面举例说明怎样利用DataSet完成对XML的读写。
打开VS2008,在D:\C#\ch14目录下建立名为XMLTest的Windows应用程序。打开工程,为当前窗体添加两个Button控件,分别用于写入和读取XML文件,如图14-30所示。
![]() |
图14-30 程序界面 |
SqlConnection sc = new SqlConnection (@"Data Source=(local);Integrated Security=SSPI;" + "Initial Catalog=StudentInf"); sc.Open(); DataSet ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter("select * from Class1 where Age>22", sc); sda.Fill(ds, "Class1"); ds.WriteXml("WriteData.xml"); sc.Close(); |
代码解释如下。
(1)首先需要创建一个到数据库StudentInf的连接SqlConnection,并打开连接,如下所示。
SqlConnection sc = new SqlConnection(@"Data Source=(local);Integrated Security=SSPI;" + "Initial Catalog=StudentInf"); sc.Open(); |
DataSet ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter("select * from Class1 where Age>22", sc); sda.Fill(ds, "Class1"); |
ds.WriteXml("WriteData.xml"); |
DataSet ds = new DataSet(); ds.ReadXml("WriteData.xml"); ds.WriteXml("ReadData.xml"); |
创建一个非类型化的DataSet,先将WriteData.xml的内容导入到DataSet,再从DataSet中写到ReadData.xml里。这里,WriteData.xml采用前面“写XML”时生成的XML文档,它位于当前工程的Debug目录下。
按F5键,单击“写XML”按钮,转到当前工程的Debug目录下,读者会发现新生成了名为WriteData.xml的XML文档,打开该文档,如图14-31所示。
![]() |
(点击查看大图)图14-31 写XML文档 |
![]() |
(点击查看大图) 图14-32 读XML文档 |
这只是一个很简单的例子,但足以看出对.NET对XML的强大支持。仅仅用了两个方法、两行代码就能实现DataSet与XML之间的交互。