程序集: System.Xml (在 System.Xml.dll 中)
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。) |
安全注意事项
以下是使用 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 集合的问题。