程序集: 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集合的问题。