XmlTextReader.ReadChars(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.
Leest de tekstinhoud van een element in een tekenbuffer. Deze methode is ontworpen om grote stromen in ingesloten tekst te lezen door deze achtereenvolgens aan te roepen.
public:
int ReadChars(cli::array <char> ^ buffer, int index, int count);
public int ReadChars(char[] buffer, int index, int count);
member this.ReadChars : char[] * int * int -> int
Public Function ReadChars (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.
- index
- Int32
De positie waar buffer de methode kan beginnen met het schrijven van tekstinhoud.
- count
- Int32
Het aantal tekens dat moet worden geschreven in buffer.
Retouren
Het aantal tekens dat wordt gelezen. Dit kan zijn 0 als de lezer niet is geplaatst op een element of als er geen tekstinhoud meer is om terug te keren in de huidige context.
Uitzonderingen
count is groter dan de ruimte die is opgegeven in de buffer (buffergrootte - index).
De buffer waarde is null.
index
< 0 of count< 0.
Voorbeelden
In het volgende voorbeeld wordt in XML gelezen met behulp van ReadChars.
using System;
using System.Xml;
// Reads an XML document using ReadChars
public class Sample {
private const String filename = "items.xml";
public static void Main() {
XmlTextReader reader = null;
try {
// Declare variables used by ReadChars
Char []buffer;
int iCnt = 0;
int charbuffersize;
// Load the reader with the data file. Ignore white space.
reader = new XmlTextReader(filename);
reader.WhitespaceHandling = WhitespaceHandling.None;
// Set variables used by ReadChars.
charbuffersize = 10;
buffer = new Char[charbuffersize];
// Parse the file. Read the element content
// using the ReadChars method.
reader.MoveToContent();
while ( (iCnt = reader.ReadChars(buffer,0,charbuffersize)) > 0 ) {
// Print out chars read and the buffer contents.
Console.WriteLine (" Chars read to buffer:" + iCnt);
Console.WriteLine (" Buffer: [{0}]", new String(buffer,0,iCnt));
// Clear the buffer.
Array.Clear(buffer,0,charbuffersize);
}
}
finally {
if (reader!=null)
reader.Close();
}
}
} // End class
Imports System.Xml
' Reads an XML document using ReadChars
Public Class Sample
Private Const filename As String = "items.xml"
Public Shared Sub Main()
Dim reader As XmlTextReader = Nothing
Try
' Declare variables used by ReadChars
Dim buffer() As Char
Dim iCnt As Integer = 0
Dim charbuffersize As Integer
' Load the reader with the data file. Ignore white space.
reader = New XmlTextReader(filename)
reader.WhitespaceHandling = WhitespaceHandling.None
' Set variables used by ReadChars.
charbuffersize = 10
buffer = New Char(charbuffersize) {}
' Parse the file. Read the element content
' using the ReadChars method.
reader.MoveToContent()
iCnt = reader.ReadChars(buffer,0,charbuffersize)
while (iCnt > 0)
' Print out chars read and the buffer contents.
Console.WriteLine(" Chars read to buffer:" & iCnt)
Console.WriteLine(" Buffer: [{0}]", New String(buffer, 0, iCnt))
' Clear the buffer.
Array.Clear(buffer, 0, charbuffersize)
iCnt = reader.ReadChars(buffer,0,charbuffersize)
end while
Finally
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub
End Class
In het voorbeeld wordt het items.xml bestand als invoer gebruikt.
<?xml version="1.0"?>
<!-- This is a sample XML document -->
<!DOCTYPE Items [<!ENTITY number "123">]>
<Items>
<Item>Test with an entity: &number;</Item>
<Item>test with a child element <more/> stuff</Item>
<Item>test with a CDATA section <![CDATA[<456>]]> def</Item>
<Item>Test with an char entity: A</Item>
<!-- Fourteen chars in this element.-->
<Item>1234567890ABCD</Item>
</Items>
Opmerkingen
Note
Wij raden aan dat u XmlReader instanties maakt met behulp van de XmlReader.Create methode om te profiteren van nieuwe functionaliteiten.
Dit is de meest efficiƫnte manier om zeer grote stromen tekst te verwerken die zijn ingesloten in een XML-document. In plaats van grote tekenreeksobjecten toe te wijzen, ReadChars retourneert u tekstinhoud een buffer tegelijk. Deze methode is ontworpen om alleen te werken op elementknooppunten. Andere knooppunttypen zorgen ervoor ReadChars dat deze worden geretourneerd 0.
Als de lezer in de volgende XML op de starttag staat, ReadChars retourneert test en plaatst u de lezer na de eindtag.
<Item>test</Item>
ReadChars heeft de volgende functionaliteit:
Deze methode is alleen ontworpen om te werken op elementknooppunten. Andere knooppunttypen zorgen ervoor
ReadCharsdat er 0 wordt geretourneerd.Deze methode retourneert de werkelijke tekeninhoud. Er is geen poging om entiteiten, CDATA of andere markeringen op te lossen.
ReadCharsretourneert alles tussen de begintag en de eindtag, inclusief markeringen.ReadCharsnegeert XML-markeringen die niet goed zijn opgemaakt. Als u bijvoorbeeld de volgende XML-tekenreeks<A>1<A>2</A>leest,ReadCharswordt deze geretourneerd1<A>2</A>. (Hiermee worden markeringen van het overeenkomende elementpaar geretourneerd en worden anderen genegeerd.)Deze methode voert geen normalisatie uit.
Wanneer
ReadCharshet einde van de tekenstroom is bereikt, wordt de waarde 0 geretourneerd en wordt de lezer na de eindtag weergegeven.Kenmerkleesmethoden zijn niet beschikbaar tijdens het gebruik van
ReadChars.
Gebruik bijvoorbeeld de volgende XML:
<thing>
some text
</thing>
<item>
</item>
De lezer bevindt zich op het element aan het <item> einde van de while-lus.
if (XmlNodeType.Element == reader.NodeType && "thing" == reader.Name)
{
while(0 != reader.ReadChars(buffer, 0, 1)
{
// Do something.
// Attribute values are not available at this point.
}
}