XmlReader 类

定义

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

public ref class XmlReader abstract : IDisposable
public ref class XmlReader abstract
public abstract class XmlReader : IDisposable
public abstract class XmlReader
type XmlReader = class
    interface IDisposable
type XmlReader = class
Public MustInherit Class XmlReader
Implements IDisposable
Public MustInherit Class XmlReader
继承
XmlReader
派生
实现

示例

以下示例代码演示如何使用异步 API 分析 XML。

async Task TestReader(System.IO.Stream stream)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Async = true;

    using (XmlReader reader = XmlReader.Create(stream, settings))
    {
        while (await reader.ReadAsync())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.WriteLine("Start Element {0}", reader.Name);
                    break;
                case XmlNodeType.Text:
                    Console.WriteLine("Text Node: {0}",
                             await reader.GetValueAsync());
                    break;
                case XmlNodeType.EndElement:
                    Console.WriteLine("End Element {0}", reader.Name);
                    break;
                default:
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value);
                    break;
            }
        }
    }
}
Public Async Function TestReader(stream As System.IO.Stream) As Task
    Dim settings As New XmlReaderSettings()
    settings.Async = True

    Using reader As XmlReader = XmlReader.Create(stream, settings)
        While (Await reader.ReadAsync())
            Select Case (reader.NodeType)
                Case XmlNodeType.Element
                    Console.WriteLine("Start Element {0}", reader.Name)
                Case XmlNodeType.Text
                    Console.WriteLine("Text Node: {0}",
                             Await reader.GetValueAsync())
                Case XmlNodeType.EndElement
                    Console.WriteLine("End Element {0}", reader.Name)
                Case Else
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value)
            End Select
        End While
    End Using
End Function

注解

有关此 API 的详细信息,请参阅 XmlReader 的补充 API 备注

构造函数

XmlReader()

初始化 XmlReader 类的新实例。

属性

AttributeCount

当在派生类中被重写时,获取当前节点上的属性数。

BaseURI

当在派生类中被重写时,获取当前节点的基 URI。

CanReadBinaryContent

获取一个值,该值指示 XmlReader 是否实现二进制内容读取方法。

CanReadValueChunk

获取一个值,该值指示 XmlReader 是否实现 ReadValueChunk(Char[], Int32, Int32) 方法。

CanResolveEntity

获取一个值,该值指示此读取器是否可以分析和解析实体。

Depth

当在派生类中被重写时,获取 XML 文档中当前节点的深度。

EOF

当在派生类中被重写时,获取一个值,该值指示此读取器是否定位在流的结尾。

HasAttributes

获取一个值,该值指示当前节点是否有任何属性。

HasValue

当在派生类中被重写时,获取一个值,该值指示当前节点是否可以具有 Value

IsDefault

当在派生类中被重写时,获取一个值,该值指示当前节点是否是从 DTD 或架构中定义的默认值生成的特性。

IsEmptyElement

在派生类中重写时,获取一个值,该值指示当前节点是否为空元素 (,例如 <MyElement/> ,) 。

Item[Int32]

当在派生类中被重写时,获取具有指定索引的属性的值。

Item[String, String]

当在派生类中被重写时,获取具有指定 LocalNameNamespaceURI 的属性的值。

Item[String]

当在派生类中被重写时,获取具有指定 Name 的属性的值。

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(Stream, XmlReaderSettings)

使用指定的流和设置创建一个新的 XmlReader 实例。

Create(Stream, XmlReaderSettings, String)

使用指定的流、基 URI 和设置创建一个新的 XmlReader 实例。

Create(Stream, XmlReaderSettings, XmlParserContext)

使用指定的流、设置和用于分析的上下文信息创建一个新的 XmlReader 实例。

Create(String)

用指定的 URI 创建一个新的 XmlReader 实例。

Create(String, XmlReaderSettings)

使用指定的 URI 和设置创建新的 XmlReader 实例。

Create(String, XmlReaderSettings, XmlParserContext)

使用指定的 URI、设置和进行分析的上下文信息创建一个新的 XmlReader 实例。

Create(TextReader)

使用指定的文本读取器创建一个新的 XmlReader 实例。

Create(TextReader, XmlReaderSettings)

使用指定的文本读取器和设置创建一个新的 XmlReader 实例。

Create(TextReader, XmlReaderSettings, String)

使用指定的文本读取器、设置和基 URI 创建一个新的 XmlReader

Create(TextReader, XmlReaderSettings, XmlParserContext)

使用指定的文本读取器、设置和要用于分析的上下文信息创建一个新的 XmlReader 实例。

Create(XmlReader, XmlReaderSettings)

使用指定的 XML 读取器和设置创建一个新的 XmlReader 实例。

Dispose()

释放 XmlReader 类的当前实例所使用的所有资源。

Dispose(Boolean)

释放由 XmlReader 占用的非托管资源,还可以另外再释放托管资源。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetAttribute(Int32)

当在派生类中被重写时,获取具有指定索引的属性的值。

GetAttribute(String)

当在派生类中被重写时,获取具有指定 Name 的属性的值。

GetAttribute(String, String)

当在派生类中被重写时,获取具有指定 LocalNameNamespaceURI 的属性的值。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
GetValueAsync()

异步获取当前节点的值。

IsName(String)

返回一个值,该值指示字符串自变量是否是有效的 XML 名称。

IsNameToken(String)

返回一个值,该值指示该字符串自变量是否是有效的 XML 名称标记。

IsStartElement()

调用 MoveToContent() 并测试当前内容节点是否是开始标记或空元素标记。

IsStartElement(String)

调用 MoveToContent() 并测试当前内容节点是否是开始标记或空元素标记,以及所找到元素的 Name 属性是否与给定的参数匹配。

IsStartElement(String, String)

调用 MoveToContent() 并测试当前内容节点是否是开始标记或空元素标记,以及所找到元素的 LocalNameNamespaceURI 属性是否与给定的字符串匹配。

LookupNamespace(String)

当在派生类中被重写时,在当前元素的范围内解析命名空间前缀。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
MoveToAttribute(Int32)

当在派生类中被重写时,移动到具有指定索引的属性。

MoveToAttribute(String)

当在派生类中被重写时,移动到具有指定 Name 的属性。

MoveToAttribute(String, String)

当在派生类中被重写时,移动到具有指定的 LocalNameNamespaceURI 的属性。

MoveToContent()

检查当前节点是否是内容(非空白文本、CDATAElementEndElementEntityReferenceEndEntity)节点。 如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。 它跳过以下类型的节点:ProcessingInstructionDocumentTypeCommentWhitespaceSignificantWhitespace

MoveToContentAsync()

异步检查当前节点是否为内容节点。 如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。

MoveToElement()

当在派生类中被重写时,移动到包含当前属性节点的元素。

MoveToFirstAttribute()

当在派生类中被重写时,移动到第一个属性。

MoveToNextAttribute()

当在派生类中被重写时,移动到下一个属性。

Read()

当在派生类中被重写时,从流中读取下一个节点。

ReadAsync()

异步读取该流的下一个节点。

ReadAttributeValue()

当在派生类中被重写时,将属性值解析为一个或多个 TextEntityReferenceEndEntity 节点。

ReadContentAs(Type, IXmlNamespaceResolver)

将内容作为指定类型的对象读取。

ReadContentAsAsync(Type, IXmlNamespaceResolver)

将内容作为指定类型的对象异步读取。

ReadContentAsBase64(Byte[], Int32, Int32)

读取内容并返回 Base64 解码的二进制字节。

ReadContentAsBase64Async(Byte[], Int32, Int32)

异步读取内容并返回 Base64 解码的二进制字节。

ReadContentAsBinHex(Byte[], Int32, Int32)

读取内容并返回 BinHex 解码的二进制字节。

ReadContentAsBinHexAsync(Byte[], Int32, Int32)

异步读取内容并返回 BinHex 解码的二进制字节。

ReadContentAsBoolean()

将当前位置的文本内容作为 Boolean 读取。

ReadContentAsDateTime()

将当前位置的文本内容作为 DateTime 对象读取。

ReadContentAsDateTimeOffset()

将当前位置的文本内容作为 DateTimeOffset 对象读取。

ReadContentAsDecimal()

将当前位置的文本内容作为 Decimal 对象读取。

ReadContentAsDouble()

将当前位置的文本内容作为双精度浮点数读取。

ReadContentAsFloat()

将当前位置的文本内容作为单精度浮点数读取。

ReadContentAsInt()

将当前位置的文本内容作为 32 位有符号整数读取。

ReadContentAsLong()

将当前位置的文本内容作为 64 位有符号整数读取。

ReadContentAsObject()

将当前位置的文本内容作为 Object 读取。

ReadContentAsObjectAsync()

将当前位置的文本内容作为 Object 对象异步读取。

ReadContentAsString()

将当前位置的文本内容作为 String 对象读取。

ReadContentAsStringAsync()

将当前位置的文本内容作为 String 对象异步读取。

ReadElementContentAs(Type, IXmlNamespaceResolver)

将元素内容作为请求类型读取。

ReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后将元素内容作为请求类型读取。

ReadElementContentAsAsync(Type, IXmlNamespaceResolver)

将元素内容作为请求类型异步读取。

ReadElementContentAsBase64(Byte[], Int32, Int32)

读取元素并对 Base64 内容进行解码。

ReadElementContentAsBase64Async(Byte[], Int32, Int32)

异步读取元素并对 Base64 内容进行解码。

ReadElementContentAsBinHex(Byte[], Int32, Int32)

读取元素并对 BinHex 内容进行解码。

ReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

异步读取元素并对 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 返回。

ReadElementContentAsObjectAsync()

异步读取当前元素并将内容作为 Object 返回。

ReadElementContentAsString()

读取当前元素并将内容作为 String 对象返回。

ReadElementContentAsString(String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 String 对象返回。

ReadElementContentAsStringAsync()

异步读取当前元素并将内容作为 String 对象返回。

ReadElementString()

读取纯文本元素。 但是,建议改用 ReadElementContentAsString() 方法,因为该方法可以更直接地处理此操作。

ReadElementString(String)

在读取纯文本元素之前,检查所找到元素的 Name 属性是否与给定的字符串匹配。 但是,建议改用 ReadElementContentAsString() 方法,因为该方法可以更直接地处理此操作。

ReadElementString(String, String)

在读取纯文本元素之前,检查所找到元素的 LocalNameNamespaceURI 属性是否与给定的字符串匹配。 但是,建议改用 ReadElementContentAsString(String, String) 方法,因为该方法可以更直接地处理此操作。

ReadEndElement()

检查当前内容节点是否为结束标记并将读取器推进到下一个节点。

ReadInnerXml()

当在派生类中被重写时,将所有内容(包括标记)当做字符串读取。

ReadInnerXmlAsync()

异步读取所有内容,包括作为字符串的标记。

ReadOuterXml()

当在派生类中被重写时,读取表示该节点和所有它的子级的内容(包括标记)。

ReadOuterXmlAsync()

异步读取包含该节点和所有它的子级的内容(包括标记)。

ReadStartElement()

检查当前节点是否为元素并将读取器推进到下一个节点。

ReadStartElement(String)

检查当前内容节点是否为具有给定 Name 的元素并将读取器推进到下一个节点。

ReadStartElement(String, String)

检查当前内容节点是否为具有给定 LocalNameNamespaceURI 的元素并将读取器推进到下一个节点。

ReadString()

当在派生类中被重写时,将元素或文本节点的内容当做字符串读取。 但是,建议改用 ReadElementContentAsString 方法,因为该方法可以更直接地处理此操作。

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(Char[], Int32, Int32)

读取嵌入在 XML 文档中的大量文本流。

ReadValueChunkAsync(Char[], Int32, Int32)

异步读取嵌入在 XML 文档中的大量文本流。

ResolveEntity()

当在派生类中被重写时,解析 EntityReference 节点的实体引用。

Skip()

跳过当前节点的子级。

SkipAsync()

异步跳过当前节点的子级。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

显式接口实现

IDisposable.Dispose()

有关此成员的说明,请参见 Dispose()

适用于

另请参阅