XmlTextReader 类

表示提供对 XML 数据进行快速、非缓存、只进访问的读取器。

**命名空间:**System.Xml
**程序集:**System.Xml(在 system.xml.dll 中)

语法

声明
Public Class XmlTextReader
    Inherits XmlReader
    Implements IXmlLineInfo, IXmlNamespaceResolver
用法
Dim instance As XmlTextReader
public class XmlTextReader : XmlReader, IXmlLineInfo, IXmlNamespaceResolver
public ref class XmlTextReader : public XmlReader, IXmlLineInfo, IXmlNamespaceResolver
public class XmlTextReader extends XmlReader implements IXmlLineInfo, IXmlNamespaceResolver
public class XmlTextReader extends XmlReader implements IXmlLineInfo, IXmlNamespaceResolver

备注

提示

在 Microsoft .NET Framework 2.0 版 版本中,推荐的做法是使用 System.Xml.XmlReader.Create 方法创建 XmlReader 实例。这使您可以充分利用此版本中引入的新功能。有关更多信息,请参见 创建 XML 读取器

XmlTextReader 提供对 XML 数据流的只进只读访问。当前节点指读取器定位到的节点。使用任何读方法推进读取器并且属性反映当前节点的值。

此类实现 XmlReader 并符合 W3C 可扩展标记语言 (XML) 1.0 和“XML 中的命名空间”建议。XmlTextReader 提供以下功能:

  • 执行格式良好的 XML 的规则。

  • XmlTextReader 不提供数据验证。

  • 检查 DocumentType 节点是否是格式良好的。XmlTextReader 检查 DTD 的格式是否正确,但不使用 DTD 进行验证。

  • 对于 NodeTypeXmlNodeType.EntityReference 的节点,返回单个空 EntityReference 节点(即 Value 属性为 String.Empty)。

提示

DTD 中实体的实际声明称为 Entity 节点。当在数据中引用这些节点时,它们叫做 EntityReference 节点。

  • 不展开默认属性。

因为 XmlTextReader 不执行数据验证所需的额外检查,所以它提供快速格式正确性分析器。

若要执行数据验证,请使用验证 XmlReader。有关更多信息,请参见 使用 XmlReader 验证 XML 数据

若要从 XmlDocument 中读取 XML 数据,请使用 XmlNodeReader

XmlTextReader 在发生 XML 分析错误时引发 XmlException。引发异常后,读取器的状态不可预知。例如,报告的节点类型可能不同于当前节点的实际节点类型。使用 ReadState 属性可以检查读取器是否处于错误状态。

有关 XmlReader 类的进一步论述,请参见 用 XmlReader 读取 XML

安全注意事项

下面是使用 XmlTextReader 类时的注意事项。

  • XmlTextReader 引发的异常可能会泄漏您不希望冒泡到应用程序的路径信息。应用程序必须捕捉异常并进行相应的处理。

  • DTD 处理在默认情况下是启用的。如果担心出现拒绝服务问题或者正在处理不受信任的源,则应禁用 DTD 处理。将 ProhibitDtd 属性设置为 true 可禁用 DTD 处理。

    如果启用了 DTD 处理,则可使用 XmlSecureResolver 限制 XmlTextReader 可访问的资源。还可以设计应用程序以使 XML 处理受内存和时间的约束。例如,在 ASP.NET 应用程序中配置超时限制。

  • XML 数据可包括对 DTD 文件等外部资源的引用。在默认情况下,使用不具有用户凭据的 XmlUrlResolver 对象解析外部资源。通过执行下列操作之一,可以使此操作更加安全:

    • 通过将 XmlResolver 属性设置为 XmlSecureResolver 对象限制 XmlTextReader 可访问的资源。

    • 通过将 XmlResolver 属性设置为空引用(在 Visual Basic 中为 Nothing) 不允许 XmlReader 打开任何外部资源。

  • XML 数据可以包含大量需要很多时间才能处理的属性、命名空间声明、嵌套元素等。若要限制发送到 XmlTextReader 的输入的大小,请创建自定义的 IStream 实现并为其提供 XmlTextReader

  • ReadValueChunk 方法可用于处理大的数据流。此方法一次读取少量字符,而不是为整个值分配一个字符串。

  • 默认情况下不展开常规实体。调用 ResolveEntity 方法时展开常规实体。

给继承者的说明 该类有继承需求。要从 XmlTextReader 继承,需要完全信任。有关更多信息,请参见 继承要求

继承层次结构

System.Object
   System.Xml.XmlReader
    System.Xml.XmlTextReader

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

XmlTextReader 成员
System.Xml 命名空间

其他资源

XML 文档和数据
安全性和 System.Xml 应用程序