XmlReader.ReadValueChunk(Char[], Int32, Int32) 方法

定义

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

public:
 virtual int ReadValueChunk(cli::array <char> ^ buffer, int index, int count);
public virtual int ReadValueChunk (char[] buffer, int index, int count);
abstract member ReadValueChunk : char[] * int * int -> int
override this.ReadValueChunk : char[] * int * int -> int
Public Overridable Function ReadValueChunk (buffer As Char(), index As Integer, count As Integer) As Integer

参数

buffer
Char[]

作为文本内容写入到的缓冲区的字符数组。 此值不能为 null

index
Int32

缓冲区中的偏移量,XmlReader 可以从这个位置开始复制结果。

count
Int32

要复制到缓冲区中的最大字符数。 此方法返回复制的实际字符数。

返回

Int32

读取到缓冲区中的字符数。 如果不再有文本内容,则返回值零。

例外

当前节点没有值(HasValuefalse)。

  • 或 -

在上一次异步操作完成之前调用了 XmlReader 方法。 在此情况下,会引发 InvalidOperationException 并显示消息“异步操作已在进行中。”

buffer 值为 null

缓冲区中的索引或者索引与计数之和大于分配的缓冲区大小。

XmlReader 实现不支持此方法。

XML 数据不是格式良好的。

注解

此方法允许读取以流式传输方式嵌入 XML 文档的大型文本流,即一次少量字符,而不是为整个值分配单个字符串。 此方法可以在任何具有值 (HasValue true 的节点上调用) ,但是仅在对文本、空白和重要空白节点调用时才会实际流式传输节点值。 其他节点类型值将缓存,包括属性和 CDATA 节点。

此方法仅返回属性的内容 Value ,并且不移动 XmlReader

此方法将节点值的指定字符数 (count) 读入字符缓冲区, (buffer) 指定偏移 index 量 () ,并返回写入缓冲区的字符数。 它返回 0 值结束时间。 无法重新启动以再次读取值。

在对 ReadValueChunk 属性的 XmlReader 调用之间不会发生任何更改,但属性除外 Value 。 当访问该 Value 属性时,它可能会返回部分值 (,其中字符尚未由 ReadValueChunk) 返回,也可以返回完整值,具体取决于实现。 命名空间中的所有System.Xml实现都XmlReader返回属性实现的部分Value值。

可以在调用 ReadValueChunk之间调用任何 Read 方法。 如果发生这种情况,则会 XmlReader 跳过流中的下一个 XmlNodeType 移动,并且未返回的任何字符。

返回的字符数小于所请求的字符数时 ReadValueChunk ,可能会出现这种情况。 例如,如果具有 200 个字符的长值,其代理项对位于位置 127 和 128,并且使用 128 个字符缓冲区进行调用 ReadValueChunk ,则方法调用将返回 127 个字符,而不是请求的 128 个字符。 然后,代理项对将在下一 ReadValueChunk 次调用中返回。 在这种情况下,未返回请求的 128 个字符, ReadValueChunk 因为这样做会导致缓冲区末尾的代理项对不完整。

有关此方法的异步版本,请参阅 ReadValueChunkAsync

适用于