HOW TO:使用 Visual C# .NET 将 XML 数据读入数据集中 (From MSDN)

本文的发布号曾为 CHS311566
有关本文的 Microsoft Visual Basic .NET 版本,请参见 309702

有关本文的 Microsoft Visual C++ .NET 版本,请参见 311570

本文引用下面的 Microsoft .NET 框架类库名称空间:
  • System.Data
  • System.Data.SqlClient

本任务的内容

概要

本文演示如何将可扩展标记语言 (XML) 数据读入到 ADO.NET DataSet(数据集)对象中。

返回页首

要求

下面的列表列出了推荐使用的硬件、软件、网络结构以及所需的 Service Pack:
  • Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server 或 Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
本文假定您熟悉下列主题:
  • Visual Studio .NET
  • ADO.NET 基础和语法
  • XML 基础
返回页首

技术说明

您可使用 ReadXml 方法将 XML 架构和数据读入到 数据集中。XML 数据可直接从文件、 Stream 对象、 XmlWriter 对象或 TextWriter 对象中读取。

可以根据需要使用 ReadXml 的两组重载方法中的一组。第一组中的四个重载方法只取一个参数。第二组中的四个重载方法除了取第一组中的一个参数外另外多取了一个参数 ( XmlReadMode)。

下表概述第一组重载方法,它们取一个参数:
  • 以下代码使用指定的文件将 XML 架构和数据读入到数据集中:
    Overloads Public Sub ReadXml(String)
  • 以下代码使用指定的 TextReader 将 XML 架构和数据读入到数据集中。TextReader 是为字符输入而设计的。
    重载 Public Sub ReadXml(TextReader)
  • 以下代码使用指定的 System.IO.Stream 将 XML 架构和数据读入到数据集中。Stream 类是为字节输入和输出设计的。
    Overloads Public Sub ReadXml(Stream)
  • 以下代码使用指定的 XmlReader 将 XML 架构和数据读入到数据集中。对于遵守 World Wide Web 联合会 (W3C) XML 1.0 规范并符合 XML 规范中的名称空间的 XML 数据,此方法可提供快速、无缓存和只向前的访问。
    Overloads Public Sub ReadXml(XmlReader)
以下列表概述第二组重载方法,它们取 XmlReadMode 参数和上述参数之一。 XmlReadMode 枚举指定如何将 XML 数据和架构读入到 数据集中。
  • DiffGram。读取一个 DiffGram,并将该 DiffGram 中的更改应用到数据集中。
  • Fragment。读取包含内联 XML 数据简化 (XDR) 架构片断的 XML 文档(如在针对 Microsoft SQL Server 的实例运行包含内联 XDR 架构的 FOR XML 架构时生成的那些片断)。
  • IgnoreSchema。忽略任何内联架构并将数据读入现有的数据集架构中。
  • InferSchema。忽略任何内联架构,从该数据推导架构,然后加载该数据。如果数据集已经包含一个架构,则 InferSchema 通过向现有的表中添加列和添加新表(如果表不存在的话)来扩展当前架构。
  • ReadSchema。读取任何内联架构并加载数据。
  • Auto。默认设置。执行最适合的操作。
返回页首

创建项目和添加代码

此示例使用一个名为 MySchema.xml 的文件。若要创建 MySchema.xml,请按照以下 Microsoft 知识库文章中的步骤操作:

309183 HOW TO:使用 Visual C# .NET 将 ADO.NET 数据集存留为 XML

以下示例代码演示如何使用 ReadXml 的两个最常用的重载版本。有关其他示例,请参阅 MSDN 上有关此方法的各个重载主题。
  1. 启动 Visual Studio .NET。
  2. 在 Visual C# .NET 中新建一个 Windows 应用程序项目。默认情况下会将 Form1 添加到项目中。
  3. 确保您的项目包含一个对 System.Data 名称空间的引用,如果未包含,请添加一个对此名称空间的引用。
  4. 将两个 Button 控件和一个 DataGrid 控件放到 Form1 上。将 Button1 的 Name 属性更改为 btnReader,然后将它的 Text 属性更改为 Reader

    将 Button2 的 Name 属性更改为 btnFile,然后将它的 Text 属性更改为 File
  5. 针对 SystemSystem.Data System.Data.SqlClient 名称空间使用 using 语句,这样以后就不需要在代码中限定这些名称空间中的声明了。
    using System;
    using System.Data;
    using System.Data.SqlClient;
  6. 将以下代码添加到与这些按钮相对应的事件处理程序中:
    private void btnReader_Click(object sender, System.EventArgs e)
    {
    string myXMLfile = @"C:/MySchema.xml";
    DataSet ds = new DataSet();
    // Create new FileStream with which to read the schema.
    System.IO.FileStream fsReadXml = new System.IO.FileStream 
    (myXMLfile, System.IO.FileMode.Open);
    try
        {
    ds.ReadXml(fsReadXml);
    dataGrid1.DataSource = ds;
    dataGrid1.DataMember = "Cust";
        }
    catch (Exception ex)
        {
    	MessageBox.Show(ex.ToString());
        }
    finally
        {
    	fsReadXml.Close();
        }
    }
    		
    private void btnFile_Click(object sender, System.EventArgs e)
    {
    string myXMLfile = "C://MySchema.xml";
    DataSet ds = new DataSet();
    try
        {
    ds.ReadXml(myXMLfile);
    dataGrid1.DataSource = ds;
    dataGrid1.DataMember = "Cust";
        }
    catch (Exception ex)
        {
    MessageBox.Show(ex.ToString());
        }
    }
  7. 根据您的环境相应地修改 XML 文件 (MyXmlFile) 的路径。
  8. 保存项目。在调试菜单上,单击开始以运行您的项目。
  9. 单击任一按钮,以便从指定的文件读取 XML 数据。请注意,XML 数据将出现在网格中。
返回页首

其他备注

  • 若要只读取 XML 架构,可使用 ReadXmlSchema 方法。
  • 若要只获取数据集中的数据的 XML 表示形式,而不将它保持到流或文件上,则可以使用 GetXml 方法。
返回页首

参考

有关其他信息,请单击下列文章编号以查看 Microsoft 知识库中的文章:

309183 HOW TO:使用 Visual C# .NET 将 ADO.NET 数据集存留为 XML

262450 HOWTO: A C++ Sample of ADO Recordset XML Persistence(HOW TO:将 ADO 数据集保持为 XML 的 C++ 示例)

有关 ADO.NET 对象和语法的更多信息,请参阅以下 Microsoft .NET 框架软件开发工具包 (SDK) 文档或 MSDN Online:

使用 ADO.NET 访问数据
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaccessingdatawithadonet.asp

返回页首

这篇文章中的信息适用于:

  • Microsoft ADO.NET(随 .NET 框架一起提供)
  • Microsoft Visual C# .NET (2002)
最近更新:2002-6-18 (1.0)
关键字kbDSupport kbhowto kbHOWTOmaster kbSystemData kbXML KB311566
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值