在 .NET Framework 应用程序中将 XML 数据读入数据集

注意

数据集和相关类是 2000 年代初的旧 .NET Framework 技术,使应用程序能够在应用程序与数据库断开连接时处理内存中的数据。 这些方法对于使用户能够修改数据并持续更改回数据库的应用程序特别有用。 虽然数据集已被证明是一项非常成功的技术,但我们建议新的 .NET 应用程序使用 Entity Framework Core。 实体框架提供了一种更自然的方式来将表格数据作为对象模型,并且具有更简单的编程接口。

ADO.NET 提供了用于处理 XML 数据的简单方法。 在本演练中,将创建一个 Windows 应用程序,用于将 XML 数据加载到数据集。 然后,数据集将显示在 DataGridView 控件中。 最后,将在文本框中显示基于 XML 文件内容的 XML 架构。

先决条件

要完成本教程,需要安装 Visual Studio 并安装以下工作负载:

  • .NET 桌面开发
  • 数据存储和处理

若要安装这些程序,请打开 Visual Studio 安装程序,然后在要修改的 Visual Studio 版本旁选择修改(或更多>修改)。 请参阅修改 Visual Studio

创建新项目

为 C# 或 Visual Basic 创建一个新的 Windows 窗体应用项目。 将项目命名为“ReadingXML”。

生成要读入数据集的 XML 文件

由于此演练侧重于将 XML 数据读入数据集,因此提供了 XML 文件的内容。

  1. 在“项目”菜单上,选择“添加新项”。

  2. 选择“XML 文件”,将文件命名为“authors.xml”,然后选择“添加” 。

    该 XML 文件将加载到设计器中,并可供编辑。

  3. 将以下 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>
    
  4. 在“文件”菜单上,单击“保存 authors.xml” 。

创建用户界面

此应用程序的用户界面包括以下各项:

  • 将 XML 文件的内容显示为数据的 DataGridView 控件。

  • 显示 XML 文件的 XML 架构的 TextBox 控件。

  • 两个 Button 控件。

    • 一个按钮将 XML 文件读入到数据集,并将其显示在 DataGridView 控件中。

    • 第二个按钮从数据集中提取架构,并通过 StringWriter 将其显示在 TextBox 控件中。

向窗体添加控件

  1. 在设计视图中打开 Form1

  2. 在“工具箱”中,将以下控件拖动到窗体:

  3. 设置以下属性:

    控制 属性 设置
    TextBox1 多行 true
    ScrollBars 垂直
    Button1 名称 ReadXmlButton
    Text Read XML
    Button2 名称 ShowSchemaButton
    Text Show Schema

创建接收 XML 数据的数据集

在此步骤中,将创建一个名为 authors 的新数据集。 有关数据集的详细信息,请参阅 Visual Studio 中的数据集工具

  1. 在“解决方案资源管理器”中,选择“Form1”的源文件,然后选择“解决方案资源管理器”工具栏上的“视图设计器”按钮 。

  2. 工具箱的“数据”选项卡中,将 DataSet 拖动到 Form1 。

  3. 在“添加数据集”对话框中,选择“非类型化数据集”,然后选择“确定” 。

    DataSet1 被添加到组件栏。

  4. 在“属性”窗口中,设置 AuthorsDataSet 的“名称”和 DataSetName 属性 。

创建事件处理程序以将 XML 文件读入到数据集

“读取 XML”按钮将 XML 文件读入到数据集。 然后,它会设置 DataGridView 控制上的属性并将其绑定到数据集。

  1. 在“解决方案资源管理器”中,选择“Form1”,然后选择“解决方案资源管理器”工具栏上的“视图设计器”按钮 。

  2. 双击读取 XML 按钮。

    “代码编辑器”在 ReadXmlButton_Click 事件处理程序中打开。

  3. 将下面的代码键入到 ReadXmlButton_Click 事件处理程序中:

    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";
    }
    
  4. ReadXMLButton_Click 事件处理程序代码中,将 filepath = 条目更改为正确的路径。

创建事件处理程序以在文本框中显示架构

“显示架构”按钮创建一个 StringWriter 对象,该对象用架构进行填充并显示在 TextBox 控件中

  1. 在“解决方案资源管理器”中,选择“Form1”,然后选择“视图设计器”按钮 。

  2. 双击显示架构按钮。

    “代码编辑器”在 ShowSchemaButton_Click 事件处理程序中打开。

  3. 将下面的代码粘贴到 ShowSchemaButton_Click 事件处理程序中。

    private void ShowSchemaButton_Click(object sender, EventArgs e)
    {
        System.IO.StringWriter swXML = new System.IO.StringWriter();
        AuthorsDataSet.WriteXmlSchema(swXML);
        textBox1.Text = swXML.ToString();
    }
    

测试窗体

现在可以测试窗体,以确保它的行为符合预期。

  1. 按 F5 运行该应用程序。

  2. 选择“读取 XML”按钮。

    DataGridView 显示 XML 文件的内容。

  3. 选择“显示架构”按钮。

    文本框显示 XML 文件的 XML 架构。

后续步骤

此演练介绍将 XML 文件读入到数据集以及根据 XML 文件的内容创建架构的基本知识。 下面是你可能需要执行的一些任务:

  • 编辑数据集中的数据,并将其作为 XML 写回。 有关详细信息,请参阅 WriteXml

  • 编辑数据集中的数据,并将其写入数据库。