Sdílet prostřednictvím


XmlReader.ReadValueChunk(Char[], Int32, Int32) Metoda

Definice

Čte velké proudy textu vloženého do dokumentu 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

Parametry

buffer
Char[]

Pole znaků, které slouží jako vyrovnávací paměť, do které je textový obsah zapsán. Tato hodnota nemůže být null.

index
Int32

Posun v rámci vyrovnávací paměti, kde XmlReader může začít kopírovat výsledky.

count
Int32

Maximální počet znaků ke zkopírování do vyrovnávací paměti. Z této metody se vrátí skutečný počet zkopírovaných znaků.

Návraty

Počet znaků načtených do vyrovnávací paměti. Hodnota nula je vrácena, pokud není k dispozici další textový obsah.

Výjimky

Aktuální uzel nemá hodnotu (HasValue je false).

-nebo-

Před XmlReader dokončením předchozí asynchronní operace byla volána metoda . V tomto případě InvalidOperationException je vyvolán se zprávou "Asynchronní operace již probíhá.".

Hodnota buffer je null.

Index do vyrovnávací paměti nebo index + počet je větší než přidělená velikost vyrovnávací paměti.

Implementace XmlReader nepodporuje tuto metodu.

Data XML nejsou ve správném formátu.

Poznámky

Tato metoda umožňuje čtení velmi velkých datových proudů textu vložených do dokumentu XML způsobem streamování, tj. malého počtu znaků najednou místo přidělení jednoho řetězce pro celou hodnotu. Tuto metodu je možné volat na libovolném uzlu, který má hodnotu (HasValue is true), ale ke skutečnému streamování hodnoty uzlu dochází pouze při zavolání u textu, prázdných znaků a významných prázdných uzlů. Ostatní hodnoty typu uzlu jsou uložené v mezipaměti, včetně atributů a uzlů CDATA.

Tato metoda vrátí pouze obsah Value vlastnosti a nepřesune XmlReader.

Tato metoda načte zadaný počet znaků (count) hodnoty uzlu do znakové vyrovnávací paměti (buffer) při zadaném posunu (index) a vrátí počet znaků zapsaných do vyrovnávací paměti. Když dosáhne konce hodnoty, vrátí 0 hodnotu . Nelze ho restartovat, aby bylo možné hodnotu znovu pročíst.

Mezi voláním ReadValueChunkXmlReader vlastností se kromě vlastnosti neprodělají žádné změny Value . Při přístupu k Value vlastnosti může v závislosti na implementaci vrátit částečnou hodnotu (se znaky dosud nevrátil ReadValueChunk) nebo úplnou hodnotu. XmlReader Všechny implementace v System.Xml oboru názvů vrací částečnou hodnotu pro implementaci Value vlastnosti.

Libovolnou metodu Read lze volat v mezi voláními metody ReadValueChunk. Pokud k tomu dojde, XmlReader přesune se na další XmlNodeType ve streamu a všechny znaky, které se ještě nevrátily, se přeskočí.

Může se stát, že ReadValueChunk vrátí méně znaků, než je požadovaný počet znaků. Pokud jste například měli 200znakovou dlouhou hodnotu s náhradní dvojicí na pozicích 127 a 128 a volali ReadValueChunk jste s vyrovnávací pamětí 128 znaků, volání metody by vrátilo 127 znaků místo požadovaných 128 znaků. Náhradní pár by se pak vrátil v dalším ReadValueChunk volání. V tomto případě nevrátil požadovaných 128 znaků, ReadValueChunk protože by to vedlo k neúplné náhradní dvojici na konci vyrovnávací paměti.

Asynchronní verzi této metody najdete v tématu ReadValueChunkAsync.

Platí pro