演练:将 XML 数据读取到数据集
ADO.NET 提供使用 XML 数据的简单方法。 在此演练中,您将创建一个将 XML 数据加载到数据集中的 Windows 应用程序。 然后,该数据集将显示在一个 DataGridView 中。 最后,将在一个文本框中显示基于 XML 文件内容的 XML 架构。
本演练由五个主要步骤组成:
创建新项目。
创建要读入数据集的 XML 文件。
创建用户界面。
创建数据集、读取 XML 文件并将其显示在 DataGridView 控件中。
添加代码,以便根据 XML 文件在 TextBox 控件中显示 XML 架构。
提示
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
创建新项目
在此步骤中,您将创建一个将包含此演练的 Visual Basic 或 Visual C# 项目。
创建新的 Windows 项目
从**“文件”**菜单创建一个新的项目。
将该项目命名为 ReadingXML。
选择**“Windows 应用程序”,然后单击“确定”**。 有关更多信息,请参见创建基于 Windows 的应用程序。
创建 ReadingXML 项目并将其添加到“解决方案资源管理器”中。
生成要读入数据集的 XML 文件
由于本演练的重点在于将 XML 数据读入到数据集中,所以提供了 XML 文件的内容。
创建将读入数据集的 XML 文件
从**“项目”菜单中选择“添加新项”**。
选择**“XML 文件”,指定文件名为 authors.xml,然后单击“添加”**。
XML 文件即加载到设计器中并可供编辑。
将以下代码粘贴到 XML 声明下的编辑器中:
<Authors_Table> <authors> <au_id>172-32-1176</au_id> <au_lname>White</au_lname> <au_fname>Johnson</au_fname> <phone>408 496-7223</phone> <address>10932 Bigge Rd.</address> <city>Menlo Park</city> <state>CA</state> <zip>94025</zip> <contract>true</contract> </authors> <authors> <au_id>213-46-8915</au_id> <au_lname>Green</au_lname> <au_fname>Margie</au_fname> <phone>415 986-7020</phone> <address>309 63rd St. #411</address> <city>Oakland</city> <state>CA</state> <zip>94618</zip> <contract>true</contract> </authors> <authors> <au_id>238-95-7766</au_id> <au_lname>Carson</au_lname> <au_fname>Cheryl</au_fname> <phone>415 548-7723</phone> <address>589 Darwin Ln.</address> <city>Berkeley</city> <state>CA</state> <zip>94705</zip> <contract>true</contract> </authors> <authors> <au_id>267-41-2394</au_id> <au_lname>Hunter</au_lname> <au_fname>Anne</au_fname> <phone>408 286-2428</phone> <address>22 Cleveland Av. #14</address> <city>San Jose</city> <state>CA</state> <zip>95128</zip> <contract>true</contract> </authors> <authors> <au_id>274-80-9391</au_id> <au_lname>Straight</au_lname> <au_fname>Dean</au_fname> <phone>415 834-2919</phone> <address>5420 College Av.</address> <city>Oakland</city> <state>CA</state> <zip>94609</zip> <contract>true</contract> </authors> </Authors_Table>
从**“文件”菜单中,指向“保存 authors.xml”**。
创建用户界面
此应用程序的用户界面将包括以下内容:
一个 DataGridView 控件,它将 XML 文件的内容显示为数据。
一个 TextBox 控件,它显示 XML 文件的 XML 架构。
两个 Button 控件。
一个按钮将 XML 文件读入数据集并将其显示在 DataGridView 控件中。
另一个按钮从数据集中提取架构,然后通过一个 StringWriter 将其显示在 TextBox 控件中。
向窗体添加控件
在“设计”视图中打开 Form1。
将以下控件从**“工具箱”**中拖动到窗体上:
一个 DataGridView 控件
一个 TextBox 控件
两个 Button 控件
设置下列属性:
控件
Property
设置
TextBox1
Multiline
true
ScrollBars
垂直
Button1
Name
ReadXmlButton
Text
Read XML
Button2
Name
ShowSchemaButton
Text
Show Schema
创建将接收 XML 数据的数据集
在此下一个过程中,会创建一个名为 authors 的新数据集。 有关数据集的更多信息,请参见 在 Visual Studio 中使用数据集。
创建将接收 XML 数据的新数据集
对于在**“解决方案资源管理器”中选择的“Form1”的源文件,在“解决方案资源管理器”工具栏中单击“视图设计器”**按钮。
从 “工具箱”->“数据”选项卡 中将 DataSet 拖动到 Form1 上。
在 “添加数据集”对话框 上选择**“非类型化数据集”,然后单击“确定”**。
DataSet1随即被添加到组件栏。
在**“属性”**窗口中,将 Name 和 DataSetName 属性设置为 AuthorsDataSet。
创建将 XML 读入数据集的事件处理程序
**“Read XML”**按钮将 XML 文件读入数据集并对 DataGridView 设置将其绑定到该数据集的属性。
添加代码到 ReadXmlButton_Click 事件处理程序
在**“解决方案资源管理器”中,选择“Form1”,然后单击“解决方案资源管理器”工具栏上的“视图设计器”**按钮。
双击 Read XML 按钮。
**“代码编辑器”**打开并定位到 ReadXmlButton_Click 事件处理程序。
将下列代码键入到 ReadXmlButton_Click 事件处理程序中:
Private Sub ReadXmlButton_Click() Handles ReadXmlButton.Click Dim filePath As String = "Complete path where you saved the XML file" AuthorsDataSet.ReadXml(filePath) DataGridView1.DataSource = AuthorsDataSet DataGridView1.DataMember = "authors" End Sub
private void ReadXmlButton_Click(object sender, EventArgs e) { string filePath = "Complete path where you saved the XML file"; AuthorsDataSet.ReadXml(filePath); dataGridView1.DataSource = AuthorsDataSet; dataGridView1.DataMember = "authors"; }
在 ReadXMLButton_Click 事件处理程序代码中,将 filepath = 项更改为正确的路径。
创建在 Textbox 中显示架构的事件处理程序
**“Show Schema”**按钮将创建一个填充架构并在 TextBox 中显示的 StringWriter 对象。
添加代码到 ShowSchemaButton_Click 事件处理程序
在**“解决方案资源管理器”中,选择“Form1”,并单击“视图设计器”**按钮。
双击 Show Schema 按钮。
**“代码编辑器”**打开并定位到 ShowSchemaButton_Click 事件处理程序。
将下列代码键入到 ShowSchemaButton_Click 事件处理程序中。
Private Sub ShowSchemaButton_Click() Handles ShowSchemaButton.Click Dim swXML As New System.IO.StringWriter() AuthorsDataSet.WriteXmlSchema(swXML) TextBox1.Text = swXML.ToString End Sub
private void ShowSchemaButton_Click(object sender, EventArgs e) { System.IO.StringWriter swXML = new System.IO.StringWriter(); AuthorsDataSet.WriteXmlSchema(swXML); textBox1.Text = swXML.ToString(); }
测试
现在可以测试窗体,以确保其行为与预期相同。
测试窗体
按 F5 运行应用程序。
单击 Read XML 按钮。
DataGridView 显示 XML 文件的内容。
单击 Show Schema 按钮。
文本框显示 XML 文件的 XML 架构。
后续步骤
本演练显示将 XML 文件读入数据集以及基于 XML 文件内容创建架构的基本步骤。 下一步可能要执行以下几项任务: