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

緩衝區索引或索引 + count 大於配置的緩衝區大小。

XmlReader 實作不支援這個方法。

XML 資料格式不正確。

備註

這個方法可讓您以串流方式讀取內嵌在 XML 檔中的非常大型文字資料流程,也就是一次少量字元,而不是為整個值配置單一字串。 此方法可以在任何具有值 (HasValue true 的節點上呼叫,) ,不過,只有在文字、空白字元和重大空白字元節點上呼叫時,才會實際串流節點值。 系統會快取其他節點類型值,包括屬性和 CDATA 節點。

這個方法只會傳回 屬性的內容 Value ,而且不會移動 XmlReader

這個方法會將節點值的指定字元數 (count) 讀入字元緩衝區 buffer , () 指定位移 (index) ,並傳回寫入緩衝區的字元數。 當到達值的結尾時,它會傳回 0 。 無法重新開機以再次讀取值。

在 對屬性的呼叫 ReadValueChunk XmlReader 之間,除了 屬性以外 Value ,不會有任何變更。 Value存取 屬性時,可能會傳回部分值 (,其中字元尚未由) 傳回,或根據實作而傳回 ReadValueChunk 完整值。 XmlReader命名空間中的所有 System.Xml 實作都會傳 Value 回屬性實作的部分值。

呼叫 之間可以呼叫 ReadValueChunk 任何 Read 方法。 如果發生這種情況,則會 XmlReader 略過資料流程中的下一個 XmlNodeType 移動,並略過尚未傳回的任何字元。

當傳回小於要求的字元數時 ReadValueChunk ,可能會有一個情況。 例如,如果您在 127 和 128 位置有具有 Surrogate 配對的 200 個字元長值,並以 128 個字元緩衝區呼叫 ReadValueChunk ,則方法呼叫會傳回 127 個字元,而不是要求的 128 個字元。 接著會在下一個 ReadValueChunk 呼叫中傳回 Surrogate 配對。 在此情況下,未傳回要求的 128 個字元, ReadValueChunk 因為這麼做會導致緩衝區結尾的代理字組不完整。

如需這個方法的非同步版本,請參閱 ReadValueChunkAsync

適用於