DataSet与XML的交互

14.3.8  DataSet与XML的交互

XML是目前传输数据的最佳格式,有关它的基础知识将会在第15章介绍,对XML不熟悉的读者可以先学习第15章,再学习本节内容。ADO.NET对XML提供了强大的支持,它主要通过DataSet与XML进行交互。DataSet中提供了很多方法来支持对XML的操作,如表14-6所示。

DataSet与XML的交互_第1张图片  
图14-28  运行结果图
DataSet与XML的交互_第2张图片  
图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所示。

DataSet与XML的交互_第3张图片 
图14-30  程序界面
这里需要用到表14-6中的WriteXml()和ReadXml()方法。双击“写XML”按钮,添加如下代码。
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();
(2)接着需要创建一个非类型化的DataSet,利用SqlDataAdapter将表Class1中的数据(Age>22)导出到DataSet中,如下所示。
 DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter("select *
from Class1 where Age>22", sc);
sda.Fill(ds, "Class1");
(3)最后只需要利用WriteXml()方法,就能将DataSet中的数据写入到XML文档中,如下所示。
ds.WriteXml("WriteData.xml");
双击“读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所示。

DataSet与XML的交互_第4张图片 
(点击查看大图)图14-31  写XML文档
此时,从表Class1中导出的数据已经写入到XML文档中。然后再单击“读XML”按钮,打开Debug工程下的ReadData.xml文档,如图14-32所示。
DataSet与XML的交互_第5张图片 
(点击查看大图) 图14-32  读XML文档

这只是一个很简单的例子,但足以看出对.NET对XML的强大支持。仅仅用了两个方法、两行代码就能实现DataSet与XML之间的交互。


本节主要介绍了DataSet的相关知识,主要包括DataSet中的表、表之间的关系、表的导航,以及DataSet与XML之间的交互等。

你可能感兴趣的:(xml,Security,Class,文档,button,dataset)