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]

在派生类中重写时,获取具有指定 LocalName 属性的值和 NamespaceURI

Item[String]

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

LocalName

在派生类中重写时,获取当前节点的本地名称。

Name

在派生类中重写时,获取当前节点的限定名称。

NamespaceURI

在派生类中重写时,获取读取器所在的节点的命名空间 URI(如 W3C 命名空间规范中定义)。

NameTable

在派生类中重写时,获取 XmlNameTable 与此实现关联的项。

NodeType

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

Prefix

在派生类中重写时,获取与当前节点关联的命名空间前缀。

QuoteChar

在派生类中重写时,获取用于将属性节点的值括起来的引号字符。

ReadState

在派生类中重写时,获取读取器的状态。

SchemaInfo

获取由于架构验证而分配给当前节点的架构信息。

Settings

XmlReaderSettings获取用于创建此XmlReader实例的对象。

Value

在派生类中重写时,获取当前节点的文本值。

ValueType

获取当前节点的公共语言运行时 (CLR) 类型。

XmlLang

在派生类中重写时,获取当前 xml:lang 范围。

XmlSpace

在派生类中重写时,获取当前 xml:space 范围。

方法

名称 说明
Close()

在派生类中重写时,将 ReadState 更改为 Closed.

Create(Stream, XmlReaderSettings, String)

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

Create(Stream, XmlReaderSettings, XmlParserContext)

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

Create(Stream, XmlReaderSettings)

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

Create(Stream)

使用具有默认设置的指定流创建新 XmlReader 实例。

Create(String, XmlReaderSettings, XmlParserContext)

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

Create(String, XmlReaderSettings)

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

Create(String)

创建具有指定 URI 的新 XmlReader 实例。

Create(TextReader, XmlReaderSettings, String)

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

Create(TextReader, XmlReaderSettings, XmlParserContext)

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

Create(TextReader, XmlReaderSettings)

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

Create(TextReader)

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

Create(XmlReader, XmlReaderSettings)

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

Dispose()

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

Dispose(Boolean)

释放由托管资源使用 XmlReader 的非托管资源,并选择性地释放托管资源。

Equals(Object)

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

(继承自 Object)
GetAttribute(Int32)

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

GetAttribute(String, String)

在派生类中重写时,获取具有指定 LocalName 属性的值和 NamespaceURI

GetAttribute(String)

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

GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
GetValueAsync()

异步获取当前节点的值。

IsName(String)

返回一个值,该值指示字符串参数是否为有效的 XML 名称。

IsNameToken(String)

返回一个值,该值指示字符串参数是否为有效的 XML 名称标记。

IsStartElement()

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

IsStartElement(String, String)

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

IsStartElement(String)

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

LookupNamespace(String)

在派生类中重写时,解析当前元素作用域中的命名空间前缀。

MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
MoveToAttribute(Int32)

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

MoveToAttribute(String, String)

在派生类中重写时,将移动到具有指定 LocalNameNamespaceURI.

MoveToAttribute(String)

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

MoveToContent()

检查当前节点是否为内容(非空白文本、CDATAElementEndElementEntityReferenceEndEntity)节点。 如果节点不是内容节点,读取器将跳到下一个内容节点或文件末尾。 它跳过以下类型的节点:ProcessingInstruction、、DocumentTypeCommentWhitespaceSignificantWhitespace

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, String, String)

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

ReadElementContentAs(Type, IXmlNamespaceResolver)

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

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 是否与当前元素匹配,然后读取当前元素,并将内容作为单精度浮点数返回。

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, String)

在读取纯文本元素之前,检查找到的元素和LocalName属性是否NamespaceURI与给定字符串匹配。 但是,我们建议改用 ReadElementContentAsString(String, String) 该方法,因为它提供了一种更直接的方法来处理此操作。

ReadElementString(String)

在读取纯文本元素之前,检查找到的元素的属性是否 Name 与给定字符串匹配。 但是,我们建议改用 ReadElementContentAsString() 该方法,因为它提供了一种更直接的方法来处理此操作。

ReadEndElement()

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

ReadInnerXml()

在派生类中重写时,以字符串形式读取所有内容,包括标记。

ReadInnerXmlAsync()

以字符串形式异步读取所有内容,包括标记。

ReadOuterXml()

在派生类中重写时,读取内容,包括标记,表示此节点及其所有子级。

ReadOuterXmlAsync()

异步读取内容,包括标记,表示此节点及其所有子级。

ReadStartElement()

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

ReadStartElement(String, String)

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

ReadStartElement(String)

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

ReadString()

在派生类中重写时,将元素或文本节点的内容读取为字符串。 但是,我们建议改用 ReadElementContentAsString 该方法,因为它提供了一种更直接的方法来处理此操作。

ReadSubtree()

返回可用于读取当前节点及其所有后代的新 XmlReader 实例。

ReadToDescendant(String, String)

使用指定的本地名称和命名空间 URI 前进 XmlReader 到下一个后代元素。

ReadToDescendant(String)

使用指定的限定名称前进 XmlReader 到下一个后代元素。

ReadToFollowing(String, String)

读取,直到找到具有指定本地名称和命名空间 URI 的元素。

ReadToFollowing(String)

读取,直到找到具有指定限定名称的元素。

ReadToNextSibling(String, String)

使用指定的本地名称和命名空间 URI 前进 XmlReader 到下一个同级元素。

ReadToNextSibling(String)

使用指定的限定名称前进 XmlReader 到下一个同级元素。

ReadValueChunk(Char[], Int32, Int32)

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

ReadValueChunkAsync(Char[], Int32, Int32)

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

ResolveEntity()

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

Skip()

跳过当前节点的子节点。

SkipAsync()

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

ToString()

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

(继承自 Object)

显式接口实现

名称 说明
IDisposable.Dispose()

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

适用于

另请参阅