public abstract class XmlReader : IDisposable
XmlReader 类型公开以下成员
构造函数
名称 | 说明 | |
---|---|---|
XmlReader | 初始化 XmlReader 类的新实例。 |
名称 | 说明 | |
---|---|---|
AttributeCount | 当在派生类中被重写时,获取当前节点上的特性数。 | |
BaseURI | 当在派生类中被重写时,获取当前节点的基 URI。 | |
CanReadBinaryContent | 获取一个值,该值指示 XmlReader 是否实现二进制内容读取方法。 | |
CanReadValueChunk | 获取一个值,该值指示 XmlReader 是否实现 ReadValueChunk 方法。 | |
CanResolveEntity | 获取一个值,该值指示此读取器是否可以分析和解析实体。 | |
Depth | 当在派生类中被重写时,获取 XML 文档中当前节点的深度。 | |
EOF | 当在派生类中被重写时,获取一个值,该值指示此读取器是否定位在流的结尾。 | |
HasAttributes | 获取一个值,该值指示当前节点是否有任何特性。 | |
HasValue | 当在派生类中被重写时,获取一个值,该值指示当前节点是否可以具有 Value。 | |
IsDefault | 当在派生类中被重写时,获取一个值,该值指示当前节点是否是从 DTD 或架构中定义的默认值生成的特性。 | |
IsEmptyElement | 当在派生类中被重写时,获取一个值,该值指示当前节点是否为空元素(例如 <MyElement/>)。 | |
Item[Int32] | 当在派生类中被重写时,获取具有指定索引的特性的值。 | |
Item[String] | 当在派生类中被重写时,获取具有指定 Name 的特性的值。 | |
Item[String, String] | 当在派生类中被重写时,获取具有指定 LocalName 和 NamespaceURI 的特性的值。 | |
LocalName | 当在派生类中被重写时,获取当前节点的本地名称。 | |
Name | 当在派生类中被重写时,获取当前节点的限定名。 | |
NamespaceURI | 当在派生类中被重写时,获取读取器定位在其上的节点的命名空间 URI(采用 W3C 命名空间规范中定义的形式)。 | |
NameTable | 当在派生类中被重写时,获取与该实现关联的 XmlNameTable。 | |
NodeType | 当在派生类中被重写时,获取当前节点的类型。 | |
Prefix | 当在派生类中被重写时,获取与当前节点关联的命名空间前缀。 | |
QuoteChar | 当在派生类中被重写时,获取用于括住特性节点值的引号字符。 | |
ReadState | 当在派生类中被重写时,获取读取器的状态。 | |
SchemaInfo | 获取作为架构验证结果分配给当前节点的架构信息。 | |
Settings | 获取用于创建此 XmlReader 实例的 XmlReaderSettings 对象。 | |
Value | 当在派生类中被重写时,获取当前节点的文本值。 | |
ValueType | 获取当前节点的公共语言运行时 (CLR) 类型。 | |
XmlLang | 当在派生类中被重写时,获取当前的 xml:lang 范围。 | |
XmlSpace | 当在派生类中被重写时,获取当前的 xml:space 范围。 |
名称 | 说明 | |
---|---|---|
Close | 当在派生类中被重写时,将 ReadState 更改为 Closed。 | |
Create(Stream) | 使用指定的流创建一个新的 XmlReader 实例。 | |
Create(String) | 使用指定的 URI 创建一个新的 XmlReader 实例。 | |
Create(TextReader) | 使用指定的 TextReader 创建一个新的 XmlReader 实例。 | |
Create(Stream, XmlReaderSettings) | 使用指定的流和 XmlReaderSettings 对象创建一个新的 XmlReader 实例。 | |
Create(String, XmlReaderSettings) | 使用指定的 URI 和 XmlReaderSettings 创建一个新的实例。 | |
Create(TextReader, XmlReaderSettings) | 使用指定的 TextReader 和 XmlReaderSettings 对象创建一个新的 XmlReader 实例。 | |
Create(XmlReader, XmlReaderSettings) | 使用指定的 XmlReader 和 XmlReaderSettings 对象创建一个新的 XmlReader 实例。 | |
Create(Stream, XmlReaderSettings, String) | 使用指定的流、基 URI 和 XmlReaderSettings 对象创建一个新的 XmlReader 实例。 | |
Create(Stream, XmlReaderSettings, XmlParserContext) | 使用指定的流、XmlReaderSettings 和 XmlParserContext 对象创建一个新的 XmlReader 实例。 | |
Create(String, XmlReaderSettings, XmlParserContext) | 使用指定的 URI、XmlReaderSettings 和 XmlParserContext 对象创建一个新的 XmlReader 实例。 | |
Create(TextReader, XmlReaderSettings, String) | 使用指定的 TextReader、XmlReaderSettings 和基 URI 创建一个新的 XmlReader 实例。 | |
Create(TextReader, XmlReaderSettings, XmlParserContext) | 使用指定的 TextReader、XmlReaderSettings 和 XmlParserContext 对象创建一个新的 XmlReader 实例。 | |
Dispose() | ||
Dispose(Boolean) | 释放由 XmlReader 占用的非托管资源,还可以另外再释放托管资源。 | |
Equals(Object) | 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。) | |
Finalize | 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) | |
GetAttribute(Int32) | 当在派生类中被重写时,获取具有指定索引的特性的值。 | |
GetAttribute(String) | 当在派生类中被重写时,获取具有指定 Name 的特性的值。 | |
GetAttribute(String, String) | 当在派生类中被重写时,获取具有指定 LocalName 和 NamespaceURI 的特性的值。 | |
GetHashCode | 用作特定类型的哈希函数。 (继承自 Object。) | |
GetType | 获取当前实例的 Type。 (继承自 Object。) | |
IsName | 获取一个值,该值指示字符串参数是否是有效的 XML 名称。 | |
IsNameToken | 获取一个值,该值指示该字符串参数是否是有效的 XML 名称标记。 | |
IsStartElement() | 调用 MoveToContent 并测试当前内容节点是否是开始标记或空元素标记。 | |
IsStartElement(String) | 调用 MoveToContent 并测试当前内容节点是否是开始标记或空元素标记,以及所找到元素的 Name 属性是否与给定的参数匹配。 | |
IsStartElement(String, String) | 调用 MoveToContent 并测试当前内容节点是否是开始标记或空元素标记,以及所找到元素的 LocalName 和NamespaceURI 属性是否与给定的字符串匹配。 | |
LookupNamespace | 当在派生类中被重写时,在当前元素的范围内解析命名空间前缀。 | |
MemberwiseClone | 创建当前 Object 的浅表副本。 (继承自 Object。) | |
MoveToAttribute(Int32) | 当在派生类中被重写时,移动到具有指定索引的特性。 | |
MoveToAttribute(String) | 当在派生类中被重写时,移动到具有指定 Name 的特性。 | |
MoveToAttribute(String, String) | 当在派生类中被重写时,移动到具有指定的 LocalName 和 NamespaceURI 的特性。 | |
MoveToContent | 检查当前节点是否是内容(非空白文本、CDATA、Element、EndElement、EntityReference 或 EndEntity)节点。如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。 它跳过以下类型的节点:ProcessingInstruction、DocumentType、Comment、Whitespace 或 SignificantWhitespace。 | |
MoveToElement | 当在派生类中被重写时,移动到包含当前特性节点的元素。 | |
MoveToFirstAttribute | 当在派生类中被重写时,移动到第一个特性。 | |
MoveToNextAttribute | 当在派生类中被重写时,移动到下一个特性。 | |
Read | 当在派生类中被重写时,从流中读取下一个节点。 | |
ReadAttributeValue | 当在派生类中被重写时,将特性值解析为一个或多个 Text、EntityReference 或 EndEntity 节点。 | |
ReadContentAs | 将内容作为指定类型的对象读取。 | |
ReadContentAsBase64 | 读取内容并返回 Base64 解码的二进制字节。 | |
ReadContentAsBinHex | 读取内容并返回 BinHex 解码的二进制字节。 | |
ReadContentAsBoolean | 将当前位置的文本内容作为 Boolean 读取。 | |
ReadContentAsDateTime | 将当前位置的文本内容作为 DateTime 对象读取。 | |
ReadContentAsDecimal | 将当前位置的文本内容作为 Decimal 对象读取。 | |
ReadContentAsDouble | 将当前位置的文本内容作为双精度浮点数读取。 | |
ReadContentAsFloat | 将当前位置的文本内容作为单精度浮点数读取。 | |
ReadContentAsInt | 将当前位置的文本内容作为 32 位有符号整数读取。 | |
ReadContentAsLong | 将当前位置的文本内容作为 64 位有符号整数读取。 | |
ReadContentAsObject | 将当前位置的文本内容作为 Object 读取。 | |
ReadContentAsString | 将当前位置的文本内容作为 String 对象读取。 | |
ReadElementContentAs(Type, IXmlNamespaceResolver) | 将元素内容作为请求类型读取。 | |
ReadElementContentAs(Type, IXmlNamespaceResolver, String, String) | 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后将元素内容作为请求类型读取。 | |
ReadElementContentAsBase64 | 读取元素并对 Base64 内容进行解码。 | |
ReadElementContentAsBinHex | 读取元素并对 BinHex 内容进行解码。 | |
ReadElementContentAsBoolean() | 读取当前元素并将内容作为 Boolean 对象返回。 | |
ReadElementContentAsBoolean(String, String) | 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为Boolean 对象返回。 | |
ReadElementContentAsDateTime() | 读取当前元素并将内容作为 DateTime 对象返回。 | |
ReadElementContentAsDateTime(String, String) | 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为DateTime 对象返回。 | |
ReadElementContentAsDecimal() | 读取当前元素并将内容作为 Decimal 对象返回。 | |
ReadElementContentAsDecimal(String, String) | 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为Decimal 对象返回。 | |
ReadElementContentAsDouble() | 读取当前元素并将内容作为双精度浮点数返回。 | |
ReadElementContentAsDouble(String, String) | 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为双精度浮点数返回。 | |
ReadElementContentAsFloat() | 读取当前元素并将内容作为单精度浮点数返回。 | |
ReadElementContentAsFloat(String, String) | 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为单精度浮点数返回。 | |
ReadElementContentAsInt() | 读取当前元素并将内容作为 32 位有符号整数返回。 | |
ReadElementContentAsInt(String, String) | 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 32 位有符号整数返回。 | |
ReadElementContentAsLong() | 读取当前元素并将内容作为 64 位有符号整数返回。 | |
ReadElementContentAsLong(String, String) | 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 64 位有符号整返回。 | |
ReadElementContentAsObject() | 读取当前元素并将内容作为 Object 返回。 | |
ReadElementContentAsObject(String, String) | 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为Object 返回。 | |
ReadElementContentAsString() | 读取当前元素并将内容作为 String 对象返回。 | |
ReadElementContentAsString(String, String) | 检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为String 对象返回。 | |
ReadElementString() | 读取纯文本元素。 | |
ReadElementString(String) | 在读取纯文本元素之前,检查所找到元素的 Name 属性是否与给定的字符串匹配。 | |
ReadElementString(String, String) | 在读取纯文本元素之前,检查所找到元素的 LocalName 和 NamespaceURI 属性是否与给定的字符串匹配。 | |
ReadEndElement | 检查当前内容节点是否为结束标记并将读取器推进到下一个节点。 | |
ReadInnerXml | 当在派生类中被重写时,将所有内容(包括标记)当做字符串读取。 | |
ReadOuterXml | 当在派生类中被重写时,读取表示该节点和所有它的子级的内容(包括标记)。 | |
ReadStartElement() | 检查当前节点是否为元素并将读取器推进到下一个节点。 | |
ReadStartElement(String) | 检查当前内容节点是否为具有给定 Name 的元素并将读取器推进到下一个节点。 | |
ReadStartElement(String, String) | 检查当前内容节点是否为具有给定 LocalName 和 NamespaceURI 的元素并将读取器推进到下一个节点。 | |
ReadString | 当在派生类中被重写时,将元素或文本节点的内容当做字符串读取。 | |
ReadSubtree | 返回新的 XmlReader 实例,此实例可用于读取当前节点及其所有子节点。 | |
ReadToDescendant(String) | 让 XmlReader 前进到下一个具有指定限定名的子代元素。 | |
ReadToDescendant(String, String) | 让 XmlReader 前进到下一个具有指定的本地名称和命名空间 URI 的子代元素。 | |
ReadToFollowing(String) | 一直读取,直到找到具有指定限定名的元素。 | |
ReadToFollowing(String, String) | 一直读取,直到找到具有指定的本地名称和命名空间 URI 的元素。 | |
ReadToNextSibling(String) | 让 XmlReader 前进到下一个具有指定限定名的同级元素。 | |
ReadToNextSibling(String, String) | 让 XmlReader 前进到下一个具有指定的本地名称和命名空间 URI 的同级元素。 | |
ReadValueChunk | 读取嵌入在 XML 文档中的大量文本流。 | |
ResolveEntity | 当在派生类中被重写时,解析 EntityReference 节点的实体引用。 | |
Skip | 跳过当前节点的子级。 | |
ToString | 返回表示当前对象的字符串。 (继承自 Object。) |
名称 | 说明 | |
---|---|---|
IDisposable.Dispose | 有关此成员的说明,请参见 IDisposable.Dispose。 |
以下是使用 XmlReader 类时的注意事项。
XmlReader 引发的异常会泄漏您不希望冒泡到应用程序的路径信息。 应用程序必须捕捉并适当处理这些异常。
如果您担心出现拒绝服务问题或要处理非信任源,请不要启用 DTD 处理。 对于通过 Create 方法创建的 XmlReader 对象,默认情况下会禁用 DTD 处理。
如果已经启用了 DTD 处理,则可以使用 XmlSecureResolver 限制 XmlReader 可以访问的资源。 还可以设计应用程序以使 XML 处理受内存和时间的约束。 例如,在 ASP.NET 应用程序中配置超时限制。
XML 数据可以包括对外部资源(例如,架构文件)的引用。 在默认情况下,使用不具有用户凭据的 XmlUrlResolver 对象解析外部资源。 通过执行下列操作之一,可以使此操作更加安全:
通过将 XmlReaderSettings.XmlResolver 属性设置为 XmlSecureResolver 对象,限制 XmlReader 可访问的资源。
通过将 XmlReaderSettings.XmlResolver 属性设置为 null,禁止 XmlReader 打开任何外部资源。
XML 数据可以包含大量需要很多时间才能处理的特性、命名空间声明、嵌套元素等。 若要限制发送到 XmlReader 的输入大小,请创建自定义 IStream 实现并为其提供XmlReader。
可使用 ReadValueChunk 方法处理较大的数据流。 此方法一次读取少量字符,而不是为整个值分配一个字符串。
如果读取的 XML 文档具有大量唯一的本地名称、命名空间或前缀,则可能会发生问题。 如果您要使用从 XmlReader 派生的类,并为每个项调用了 LocalName、Prefix 或NamespaceURI 属性,则返回的字符串将被添加到 NameTable。 NameTable 包含的集合的大小决不会减小,它会创建字符串句柄的虚拟“内存泄漏”。 缓解这种情况的一种方法是,从 NameTable 类派生并强制使用最大大小的配额。 (无法阻止使用 NameTable,或者在它已满时切换 NameTable)。 另一种缓解是避免使用提到的属性,而是在可能时结合使用 MoveToAttribute 方法和 IsStartElement 方法;这些方法不返回字符串,从而避免了溢出 NameTable 集合的问题。