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

注释

此类 DataSet 和相关类是 2000 年代初的旧版 .NET Framework 技术,使应用程序能够在应用与数据库断开连接时处理内存中的数据。 这些技术对于使用户能够修改数据并将更改保留回数据库的应用特别有用。 尽管数据集是经过证实的成功技术,但新 .NET 应用程序的建议方法是使用 Entity Framework Core。 Entity Framework 提供了一种更自然的方式来将表格数据用作对象模型,并且具有更简单的编程接口。

ADO.NET 提供了用于处理 XML 数据的简单方法。 在本演练中,你将创建一个将 XML 数据加载到数据集中的 Windows 应用程序。 数据集然后会被显示在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

创建用户界面

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

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

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

  • 两个 Button 控件。

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

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

向窗体添加控件

  1. 在设计视图中打开 Form1

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

  3. 设置以下属性:

    控制 资产 设置
    TextBox1 多行 true
    ScrollBars 垂直
    Button1 名称 ReadXmlButton
    文字 Read XML
    Button2 名称 ShowSchemaButton
    文字 Show Schema

创建接收 XML 数据的数据集

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

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

  2. “工具箱”中,“数据”选项卡数据集 拖到 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

  • 编辑数据集中的数据并将其写出到数据库中。