System.Xml.XmlTextReader 类

方法描述

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

语法定义(C# System.Xml.XmlTextReader 类 的用法)

[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public class XmlTextReader : XmlReader, 
	IXmlLineInfo, IXmlNamespaceResolver

构造函数

构造函数名称 构造函数描述
XmlTextReader() 初始化 XmlTextReader 的新实例。
XmlTextReader(Stream) 使用指定的流初始化 XmlTextReader 类的新实例。
XmlTextReader(String) 使用指定的文件初始化 XmlTextReader 类的新实例。
XmlTextReader(TextReader) 用指定的 TextReader 初始化 XmlTextReader 类的新实例。
XmlTextReader(XmlNameTable) 基础结构。用指定的 XmlNameTable 初始化 XmlTextReader 类的新实例。
XmlTextReader(Stream, XmlNameTable) 用指定的流和 XmlNameTable 初始化 XmlTextReader 类的新实例。
XmlTextReader(String, Stream) 使用指定的 URL 和流初始化 XmlTextReader 类的新实例。
XmlTextReader(String, TextReader) 使用指定的 URL 和 TextReader 初始化 XmlTextReader 类的新实例。
XmlTextReader(String, XmlNameTable) 使用指定的文件和 XmlNameTable 初始化 XmlTextReader 类的新实例。
XmlTextReader(TextReader, XmlNameTable) 使用指定的 TextReader 和 XmlNameTable 初始化 XmlTextReader 类的新实例。
XmlTextReader(Stream, XmlNodeType, XmlParserContext) 用指定的流、XmlNodeType 和 XmlParserContext 初始化 XmlTextReader 类的新实例。
XmlTextReader(String, Stream, XmlNameTable) 使用指定的 URL、流和 XmlNameTable 初始化 XmlTextReader 类的新实例。
XmlTextReader(String, TextReader, XmlNameTable) 使用指定的 URL、TextReader 和 XmlNameTable 初始化 XmlTextReader 类的新实例。
XmlTextReader(String, XmlNodeType, XmlParserContext) 使用指定的字符串、XmlNodeType 和 XmlParserContext 初始化 XmlTextReader 类的新实例。

成员/方法

方法名称 方法描述
Close 将 ReadState 更改为 Closed。 (重写 XmlReader.Close()。)
Dispose(Boolean) 释放由 XmlReader 占用的非托管资源,还可以另外再释放托管资源。 (继承自 XmlReader。)
Equals(Object) 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetAttribute(Int32) 获取具有指定索引的特性的值。 (重写 XmlReader.GetAttribute(Int32)。)
GetAttribute(String) 获取具有指定名称的特性的值。 (重写 XmlReader.GetAttribute(String)。)
GetAttribute(String, String) 获取具有指定本地名称和命名空间 URI 的特性的值。 (重写 XmlReader.GetAttribute(String, String)。)
GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
GetNamespacesInScope 获取一个集合,该集合包含当前在范围内的所有命名空间。
GetRemainder 获取已缓冲的 XML 剩余部分。
GetType 获取当前实例的 Type。 (继承自 Object。)
HasLineInfo 获取一个值,该值指示该类是否可返回行信息。
IsStartElement() 调用 MoveToContent 并测试当前内容节点是否是开始标记或空元素标记。 (继承自 XmlReader。)
IsStartElement(String) 调用 MoveToContent 并测试当前内容节点是否是开始标记或空元素标记,以及所找到元素的 Name 属性是否与给定的参数匹配。 (继承自 XmlReader。)
IsStartElement(String, String) 调用 MoveToContent 并测试当前内容节点是否是开始标记或空元素标记,以及所找到元素的 LocalName 和 NamespaceURI 属性是否与给定的字符串匹配。 (继承自 XmlReader。)
LookupNamespace 解析当前元素的范围内的命名空间前缀。 (重写 XmlReader.LookupNamespace(String)。)
MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
MoveToAttribute(Int32) 移动到具有指定索引的特性。 (重写 XmlReader.MoveToAttribute(Int32)。)
MoveToAttribute(String) 移动到具有指定名称的特性。 (重写 XmlReader.MoveToAttribute(String)。)
MoveToAttribute(String, String) 移动到具有指定本地名称和命名空间 URI 的特性。 (重写 XmlReader.MoveToAttribute(String, String)。)
MoveToContent 检查当前节点是否是内容(非空白文本、CDATA、Element、EndElement、EntityReference 或 EndEntity)节点。 如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。 它跳过以下类型的节点:ProcessingInstruction、DocumentType、Comment、Whitespace 或 SignificantWhitespace。 (继承自 XmlReader。)
MoveToElement 移动到包含当前特性节点的元素。 (重写 XmlReader.MoveToElement()。)
MoveToFirstAttribute 移动到第一个特性。 (重写 XmlReader.MoveToFirstAttribute()。)
MoveToNextAttribute 移动到下一个特性。 (重写 XmlReader.MoveToNextAttribute()。)
Read 从流中读取下一个节点。 (重写 XmlReader.Read()。)
ReadAttributeValue 将特性值分析为一个或多个 Text、EntityReference 或 EndEntity 节点。 (重写 XmlReader.ReadAttributeValue()。)
ReadBase64 对 Base64 进行解码并返回解码的二进制字节。
ReadBinHex 对 BinHex 进行解码并返回解码后的二进制字节。
ReadChars 将元素的文本内容读入字符缓冲区。 通过连续调用此方法,可以读取大的嵌入文本流。
ReadContentAs 将内容作为指定类型的对象读取。 (继承自 XmlReader。)
ReadContentAsBase64 读取内容并返回 Base64 解码的二进制字节。 (重写 XmlReader.ReadContentAsBase64(Byte[], Int32, Int32)。)
ReadContentAsBinHex 读取内容并返回 BinHex 解码的二进制字节。 (重写 XmlReader.ReadContentAsBinHex(Byte[], Int32, Int32)。)
ReadContentAsBoolean 将当前位置的文本内容作为 Boolean 读取。 (继承自 XmlReader。)
ReadContentAsDateTime 将当前位置的文本内容作为 DateTime 对象读取。 (继承自 XmlReader。)
ReadContentAsDecimal 将当前位置的文本内容作为 Decimal 对象读取。 (继承自 XmlReader。)
ReadContentAsDouble 将当前位置的文本内容作为双精度浮点数读取。 (继承自 XmlReader。)
ReadContentAsFloat 将当前位置的文本内容作为单精度浮点数读取。 (继承自 XmlReader。)
ReadContentAsInt 将当前位置的文本内容作为 32 位有符号整数读取。 (继承自 XmlReader。)
ReadContentAsLong 将当前位置的文本内容作为 64 位有符号整数读取。 (继承自 XmlReader。)
ReadContentAsObject 将当前位置的文本内容作为 Object 读取。 (继承自 XmlReader。)
ReadContentAsString 将当前位置的文本内容作为 String 对象读取。 (继承自 XmlReader。)
ReadElementContentAs(Type, IXmlNamespaceResolver) 将元素内容作为请求类型读取。 (继承自 XmlReader。)
ReadElementContentAs(Type, IXmlNamespaceResolver, String, String) 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后将元素内容作为请求类型读取。 (继承自 XmlReader。)
ReadElementContentAsBase64 读取元素并对 Base64 内容进行解码。 (重写 XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32)。)
ReadElementContentAsBinHex 读取元素并对 BinHex 内容进行解码。 (重写 XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32)。)
ReadElementContentAsBoolean() 读取当前元素并将内容作为 Boolean 对象返回。 (继承自 XmlReader。)
ReadElementContentAsBoolean(String, String) 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 Boolean 对象返回。 (继承自 XmlReader。)
ReadElementContentAsDateTime() 读取当前元素并将内容作为 DateTime 对象返回。 (继承自 XmlReader。)
ReadElementContentAsDateTime(String, String) 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 DateTime 对象返回。 (继承自 XmlReader。)
ReadElementContentAsDecimal() 读取当前元素并将内容作为 Decimal 对象返回。 (继承自 XmlReader。)
ReadElementContentAsDecimal(String, String) 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 Decimal 对象返回。 (继承自 XmlReader。)
ReadElementContentAsDouble() 读取当前元素并将内容作为双精度浮点数返回。 (继承自 XmlReader。)
ReadElementContentAsDouble(String, String) 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为双精度浮点数返回。 (继承自 XmlReader。)
ReadElementContentAsFloat() 读取当前元素并将内容作为单精度浮点数返回。 (继承自 XmlReader。)
ReadElementContentAsFloat(String, String) 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为单精度浮点数返回。 (继承自 XmlReader。)
ReadElementContentAsInt() 读取当前元素并将内容作为 32 位有符号整数返回。 (继承自 XmlReader。)
ReadElementContentAsInt(String, String) 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 32 位有符号整数返回。 (继承自 XmlReader。)
ReadElementContentAsLong() 读取当前元素并将内容作为 64 位有符号整数返回。 (继承自 XmlReader。)
ReadElementContentAsLong(String, String) 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 64 位有符号整返回。 (继承自 XmlReader。)
ReadElementContentAsObject() 读取当前元素并将内容作为 Object 返回。 (继承自 XmlReader。)
ReadElementContentAsObject(String, String) 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 Object 返回。 (继承自 XmlReader。)
ReadElementContentAsString() 读取当前元素并将内容作为 String 对象返回。 (继承自 XmlReader。)
ReadElementContentAsString(String, String) 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 String 对象返回。 (继承自 XmlReader。)
ReadElementString() 读取纯文本元素。 (继承自 XmlReader。)
ReadElementString(String) 在读取纯文本元素之前,检查所找到元素的 Name 属性是否与给定的字符串匹配。 (继承自 XmlReader。)
ReadElementString(String, String) 在读取纯文本元素之前,检查所找到元素的 LocalName 和 NamespaceURI 属性是否与给定的字符串匹配。 (继承自 XmlReader。)
ReadEndElement 检查当前内容节点是否为结束标记并将读取器推进到下一个节点。 (继承自 XmlReader。)
ReadInnerXml 当在派生类中被重写时,将所有内容(包括标记)当做字符串读取。 (继承自 XmlReader。)
ReadOuterXml 当在派生类中被重写时,读取表示该节点和所有它的子级的内容(包括标记)。 (继承自 XmlReader。)
ReadStartElement() 检查当前节点是否为元素并将读取器推进到下一个节点。 (继承自 XmlReader。)
ReadStartElement(String) 检查当前内容节点是否为具有给定 Name 的元素并将读取器推进到下一个节点。 (继承自 XmlReader。)
ReadStartElement(String, String) 检查当前内容节点是否为具有给定 LocalName 和 NamespaceURI 的元素并将读取器推进到下一个节点。 (继承自 XmlReader。)
ReadString 将元素或文本节点的内容读取为一个字符串。 (重写 XmlReader.ReadString()。)
ReadSubtree 返回新的 XmlReader 实例,此实例可用于读取当前节点及其所有子节点。 (继承自 XmlReader。)
ReadToDescendant(String) 让 XmlReader 前进到下一个具有指定限定名的子代元素。 (继承自 XmlReader。)
ReadToDescendant(String, String) 让 XmlReader 前进到下一个具有指定的本地名称和命名空间 URI 的子代元素。 (继承自 XmlReader。)
ReadToFollowing(String) 一直读取,直到找到具有指定限定名的元素。 (继承自 XmlReader。)
ReadToFollowing(String, String) 一直读取,直到找到具有指定的本地名称和命名空间 URI 的元素。 (继承自 XmlReader。)
ReadToNextSibling(String) 让 XmlReader 前进到下一个具有指定限定名的同级元素。 (继承自 XmlReader。)
ReadToNextSibling(String, String) 让 XmlReader 前进到下一个具有指定的本地名称和命名空间 URI 的同级元素。 (继承自 XmlReader。)
ReadValueChunk 读取嵌入在 XML 文档中的大量文本流。 (继承自 XmlReader。)
ResetState 将读取器的状态重置为 ReadState.Initial。
ResolveEntity 解析 EntityReference 节点的实体引用。 (重写 XmlReader.ResolveEntity()。)
Skip 跳过当前节点的子级。 (重写 XmlReader.Skip()。)
ToString 返回表示当前对象的字符串。 (继承自 Object。)

提示和注释

注意

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

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

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

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

XmlTextReader 不提供数据验证。

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

对于 NodeType 为 XmlNodeType.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 处理。 将 DtdProcessing 属性设置为 Prohibit 可禁用 DTD 处理。

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

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

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

通过将 XmlResolver 属性设置为null 不允许 XmlReader 打开任何外部资源。

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

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

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

对继承者的说明

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

System.Xml.XmlTextReader 类例子


继承层次结构

System.Object

System.Xml.XmlReader

System.Xml.XmlTextReader

命名空间

namespace: System.Xml

程序集: System.Xml(在 System.Xml.dll 中)

线程安全

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

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。