XmlReader.ReadValueChunk(Char[], Int32, Int32) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee worden grote stromen tekst gelezen die zijn ingesloten in een XML-document.
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
Parameters
- buffer
- Char[]
De matrix van tekens die fungeert als de buffer waarnaar de tekstinhoud wordt geschreven. Deze waarde kan niet zijn null.
- count
- Int32
Het maximum aantal tekens dat moet worden gekopieerd naar de buffer. Het werkelijke aantal gekopieerde tekens wordt geretourneerd door deze methode.
Retouren
Het aantal tekens dat in de buffer wordt gelezen. De waarde nul wordt geretourneerd wanneer er geen tekstinhoud meer is.
Uitzonderingen
Het huidige knooppunt heeft geen waarde (HasValue is false).
– of –
Er XmlReader is een methode aangeroepen voordat een vorige asynchrone bewerking is voltooid. In dit geval InvalidOperationException wordt het bericht 'Er wordt al een asynchrone bewerking uitgevoerd'.
De buffer waarde is null.
De index in de buffer of index + count is groter dan de toegewezen buffergrootte.
De XmlReader implementatie biedt geen ondersteuning voor deze methode.
De XML-gegevens zijn niet goed opgemaakt.
Opmerkingen
Deze methode maakt het lezen mogelijk van zeer grote stromen tekst die zijn ingesloten in een XML-document op streaming-wijze, dat wil gezegd, een klein aantal tekens tegelijk in plaats van één tekenreeks toe te wijzen voor de hele waarde. Deze methode kan worden aangeroepen op elk knooppunt met een waarde (HasValue is true), maar de werkelijke streaming van de knooppuntwaarde vindt alleen plaats wanneer een tekst, witruimte en significante witruimteknooppunten worden aangeroepen. Andere waarden van het knooppunttype worden in de cache opgeslagen, inclusief kenmerken en CDATA-knooppunten.
Met deze methode wordt alleen de inhoud van de Value eigenschap geretourneerd en wordt de XmlReadereigenschap niet verplaatst.
Deze methode leest het opgegeven aantal tekens (count) van de knooppuntwaarde in een tekenbuffer (buffer) op een opgegeven offset (index) en retourneert het aantal tekens dat naar de buffer is geschreven. Het retourneert de 0 waarde wanneer deze het einde van de waarde heeft bereikt. Het kan niet opnieuw worden gestart om de waarde opnieuw te lezen.
Tussen aanroepen naar ReadValueChunk de XmlReader eigenschappen worden niet gewijzigd, met uitzondering van de Value eigenschap. Wanneer de Value eigenschap wordt geopend, kan deze een gedeeltelijke waarde retourneren (met tekens die nog niet zijn geretourneerd door ReadValueChunk) of een volledige waarde, afhankelijk van de implementatie. XmlReader Alle implementaties in de System.Xml naamruimte retourneren een gedeeltelijke waarde voor de implementatie van de Value eigenschap.
Elke leesmethode kan worden aangeroepen tussen aanroepen naar ReadValueChunk. Als dit gebeurt, worden de XmlReader verplaatsingen naar de volgende XmlNodeType in de stroom verplaatst en worden alle tekens die nog niet zijn geretourneerd, overgeslagen.
Er kan een geval zijn wanneer ReadValueChunk er minder dan het aangevraagde aantal tekens wordt geretourneerd. Als u bijvoorbeeld een lange waarde van 200 tekens hebt met een surrogaatpaar op posities 127 en 128 en u hebt aangeroepen ReadValueChunk met een buffer van 128 tekens, retourneert de methode-aanroep 127 tekens in plaats van de aangevraagde 128. Het surrogaatpaar wordt vervolgens geretourneerd in de volgende ReadValueChunk aanroep. In dit geval ReadValueChunk werden de aangevraagde 128 tekens niet geretourneerd, omdat dit zou hebben geresulteerd in een onvolledig surrogaatpaar aan het einde van de buffer.
Zie voor de asynchrone versie van deze methode ReadValueChunkAsync.