Sdílet prostřednictvím


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

Definice

Čte velké datové proudy textu vložené 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é se textový obsah zapisuje. Tato hodnota nemůže být null.

index
Int32

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

count
Int32

Maximální počet znaků, které se mají zkopírovat do vyrovnávací paměti. Skutečný počet zkopírovaných znaků je vrácen z této metody.

Návraty

Počet znaků přečtených do vyrovnávací paměti. Hodnota nula se vrátí, pokud už neexistuje žádný 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 zpráva "Asynchronní operace už 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 tuto metodu nepodporuje.

Data XML nejsou správně vytvořená.

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 lze volat na libovolném uzlu, který má hodnotu (HasValue je true), ale skutečné streamování hodnoty uzlu se vyskytuje pouze v případě, že voláte text, prázdné znaky a významné prázdné uzly. Jiné hodnoty typu uzlu se ukládají do 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 vyrovnávací paměti znaků (buffer) při zadaném posunu (index) a vrátí počet znaků zapsaných do vyrovnávací paměti. Vrátí 0 , když dosáhl konce hodnoty. Nelze restartovat, aby se hodnota znovu přečetla.

Mezi voláními ReadValueChunkXmlReader vlastností nedojde k žádné změně s výjimkou Value vlastnosti. Při přístupu k Value vlastnosti může buď vrátit částečnou hodnotu (s znaky, které ještě nejsou vráceny ReadValueChunk) nebo úplnou hodnotu v závislosti na implementaci. XmlReader Všechny implementace v System.Xml oboru názvů vrátí částečnou hodnotu pro implementaci Value vlastnosti.

Jakákoli metoda čtení lze volat mezi voláními .ReadValueChunk Pokud k tomu dojde, přesune XmlReader se na další XmlNodeType v datovém proudu a všechny znaky, které ještě nejsou vráceny, se přeskočí.

V případě, že ReadValueChunk se vrátí méně než požadovaný počet znaků, může se jednat o případ. Pokud byste 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 místo požadovaných 128 znaků vrátilo 127 znaků. Náhradní dvojice by se pak vrátila v dalším ReadValueChunk volání. V tomto případě se požadovaných 128 znaků nevrátilo, ReadValueChunk protože by to vedlo k neúplné náhradní dvojici na konci vyrovnávací paměti.

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

Platí pro