307548 HOW TO:使用 Visual C# .NET 从文件中读取 XML (From MKBA)

本文讨论一种 Microsoft 产品的 Beta 版本。本文中的信息按“原样”提供,如有更改恕不另行通知。

对于该 Beta 产品,Microsoft 不提供正式的产品支持。有关获取对 Beta 版本的支持的信息,请参阅 Beta 产品文件中包括的文档资料,或查看您下载此版本的站点。

有关本文的 Microsoft Visual Basic .NET 版本,请参见 CHS301225

本任务的内容

概要

本文描述如何使用 XmlTextReader 类从文件读取可扩展标记语言 (XML)。 XmlTextReader 可对 XML 直接进行语法分析和标记,并且实施了 XML 1.0 规范以及 WWW 联合会 (W3C) XML 规范中的名称空间。 本文提供了对 XML 的快速、标记化流访问,而不是使用 XML 文档对象模型 (DOM) 等对象模型。

返回页首

要求

下表概括了推荐使用的硬件、软件、网络架构以及所需的 Service Pack:
  • Microsoft Visual Studio .NET
本文假定您熟悉下列主题:
  • XML 术语
  • 创建和读取 XML 文件
返回页首

如何从文件读取 XML

本示例使用一个名为 Books.xml 的文件。您可以创建自己的 Books.xml 文件,或者使用以下文件夹中 .NET 软件开发工具包 (SDK) 快速入门包括的示例文件。

/Program Files/Microsoft Visual Studio .NET/FrameworkSDK/Samples/QuickStart/Howto/Samples/Xml/Transformxml/Cs

必须将 Books.xml 文件复制到 /Bin/Debug 文件夹中,该文件夹位于创建此项目所在文件夹的下面。也可以下载 Books.xml;有关下载位置,请参阅 参考部分。
  1. 打开 Visual Studio .NET。
  2. 新建 Visual C# .NET 控制台应用程序。 您可以直接阅读完整代码列表一节,或者继续执行以下步骤生成应用程序。
  3. 确保项目包含了对 System.Xml.dll 程序集的引用。
  4. System.Xml 名称空间上指定 using 指令,这样,以后就不需要在代码中限定 XmlTextReader 声明了。using 指令必须位于任何其他声明之前。
    using System.Xml;
  5. 创建一个 XmlTextReader 对象的实例,并使用 XML 文件填充该实例。 通常,如果需要将 XML 作为原始数据来访问而不产生 DOM 开销,则使用 XmlTextReader 类;因此,XmlTextReader 类提供了一种更快速读取 XML 的机制。XmlTextReader 类使用不同的构造函数来指定 XML 数据的位置。 以下代码创建一个 XmlTextReader 对象的实例,并加载 Books.xml 文件。 将以下代码添加到 Class1 的 Main 过程中:
    XmlTextReader reader = new XmlTextReader ("books.xml");
  6. 读取全部 XML 数据。 (注意,此步骤演示了一个外部“while”循环,并在下两个步骤中演示如何使用该循环来读取 XML。) 在创建 XmlTextReader 对象后,请使用 Read 方法读取 XML 数据。 Read 方法继续顺序读取 XML 文件直至到达文件结尾,此时 Read 方法返回“False”值。
    while (reader.Read()) 
    {
    // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
  7. 检查节点。若要处理 XML 数据,每个记录都应该有一个可通过 NodeType 属性进行确定的节点类型。Name Value 属性返回当前节点(或记录)的节点名(元素和属性名)和节点值(节点文本)。NodeType 枚举确定节点类型。下面的代码示例显示了元素的名称和文档类型。 注意,此示例忽略了元素属性。
    while (reader.Read()) 
    {
        switch (reader.NodeType) 
        {
            case XmlNodeType.Element: // The node is an element.
    Console.Write("<" + reader.Name);
    Console.WriteLine(">");
                break;
      case XmlNodeType.Text: //Display the text in each element.
                Console.WriteLine (reader.Value);
                break;
      case XmlNodeType. EndElement: //Display the end of the element.
    Console.Write("</" + reader.Name);
    Console.WriteLine(">");
                break;
        }
    }
  8. 检查属性。元素节点类型可包括一系列与其关联的属性节点。MovetoNextAttribute 方法连续在元素的每个属性中移动。使用 HasAttributes 属性检测节点是否有任何属性。AttributeCount 属性返回当前节点的属性个数。
    while (reader.Read()) 
    {
        switch (reader.NodeType) 
        {
            case XmlNodeType.Element: // The node is an element.
    Console.Write("<" + reader.Name);
    
                while (reader.MoveToNextAttribute()) // Read the attributes.
                    Console.Write(" " + reader.Name + "='" + reader.Value + "'");
                Console.Write(">");
    Console.WriteLine(">");
                break;
      case XmlNodeType.Text: //Display the text in each element.
                Console.WriteLine (reader.Value);
                break;
      case XmlNodeType. EndElement: //Display the end of the element.
    Console.Write("</" + reader.Name);
    Console.WriteLine(">");
                break;
        }
    }
  9. 保存并关闭项目。
返回页首

完整代码列表

using System;
using System.Xml;

namespace ReadXMLfromFile
{
/// <summary>
    /// Summary description for Class1.
/// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            XmlTextReader reader = new XmlTextReader ("books.xml");
            while (reader.Read()) 
            {
                switch (reader.NodeType) 
                {
                    case XmlNodeType.Element: // The node is an element.
Console.Write("<" + reader.Name);
Console.WriteLine(">");
                        break;
                    case XmlNodeType.Text: //Display the text in each element.
                        Console.WriteLine (reader.Value);
                        break;
                    case XmlNodeType.EndElement: //Display the end of the element.
Console.Write("</" + reader.Name);
Console.WriteLine(">");
                        break;
                }
            }
Console.ReadLine();
        }
    }
}
返回页首

示例输出

<bookstore>
<book>
<title>
The Autobiography of Benjamin Franklin
</title>
<author>
<first-name>
Benjamin
</first-name>
<last-name>
Franklin
</last-name>
</author>
<price>
8.99
</price>
</book>
<book>
<title>
The Confidence Man
</title>
<author>
<first-name>
Herman
</first-name>
<last-name>
Melville
</last-name>
</author>
<price>
11.99
</price>
</book>
<book>
<title>
The Gorgias
</title>
<author>
<name>
Plato
</name>
</author>
<price>
9.99
</price>
</book>
</bookstore>
返回页首

参考

下列文件可从 Microsoft 下载中心下载:

下载立即下载 Books.xml

有关详细信息,请参阅“XML in .NET:.NET Framework XML Classes and C# Offer Simple, Scalable Data Manipulation”(.NET 中的 XML:.NET 框架 XML 类和 C# 提供了简单、可缩放的数据操作)一文,这篇文章在 MSDN Magazine 中,可从下面的 Microsoft Web 站点访问:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmag01/html/xml0101.asp

有关 XmlReader 类的更多信息,请访问下面的 .NET 框架类库 Web 站点:

http://msdn.microsoft.com/library/dotnet/cpref/frlrfsystemxmlxmlreaderclasstopic.htm

有关如何使用 XmlReader 读取 XML 数据的更多信息,请参阅下面的 Microsoft .NET 框架开发人员指南文档:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguidnf/html/cpconreadingxmldatausingxmlreader.asp

返回页首


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

  • Microsoft Visual C# .NET Beta 2
最近更新:2004-8-13 (1.2)
关键字:kbdownload kbhowto kbHOWTOmaster KB307548 kbAudDeveloper
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值