XmlTextReader.ReadChars(Char[], Int32, Int32) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Membaca konten teks elemen ke dalam buffer karakter. Metode ini dirancang untuk membaca aliran besar teks yang disematkan dengan memanggilnya secara berturut-turut.
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
Parameter
- buffer
- Char[]
Array karakter yang berfungsi sebagai buffer tempat konten teks ditulis.
- index
- Int32
Posisi di buffer mana metode dapat mulai menulis konten teks.
- count
- Int32
Jumlah karakter yang akan ditulis ke dalam buffer.
Mengembalikan
Jumlah karakter yang dibaca. Ini bisa jika 0 pembaca tidak diposisikan pada elemen atau jika tidak ada lagi konten teks untuk dikembalikan dalam konteks saat ini.
Pengecualian
count lebih besar dari ruang yang ditentukan dalam buffer (ukuran buffer - index).
Nilai buffer adalah null.
index
< 0 atau count< 0.
Contoh
Contoh berikut membaca di XML menggunakan 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
Contohnya menggunakan items.xml file sebagai input.
<?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>
Keterangan
Note
Kami menyarankan Anda membuat instans XmlReader untuk memanfaatkan fungsionalitas baru dengan menggunakan metode XmlReader.Create.
Ini adalah cara paling efisien untuk memproses aliran teks yang sangat besar yang disematkan dalam dokumen XML. Daripada mengalokasikan objek string besar, ReadChars mengembalikan konten teks buffer pada satu waktu. Metode ini dirancang untuk hanya berfungsi pada node elemen. Jenis node lainnya menyebabkan ReadChars pengembalian 0.
Dalam XML berikut, jika pembaca diposisikan pada tag mulai, ReadChars mengembalikan dan memosisikan test pembaca setelah tag akhir.
<Item>test</Item>
ReadChars memiliki fungsionalitas berikut:
Metode ini dirancang untuk bekerja pada node elemen saja. Jenis node lainnya menyebabkan
ReadCharspengembalian 0.Metode ini mengembalikan konten karakter aktual. Tidak ada upaya untuk menyelesaikan entitas, CDATA, atau markup lain yang ditemui.
ReadCharsmengembalikan semuanya antara tag mulai dan tag akhir, termasuk markup.ReadCharsmengabaikan markup XML yang tidak terbentuk dengan baik. Misalnya, saat membaca string<A>1<A>2</A>XML berikut,ReadCharsmengembalikan1<A>2</A>. (Ini mengembalikan markup dari pasangan elemen yang cocok dan mengabaikan orang lain.)Metode ini tidak melakukan normalisasi apa pun.
Ketika
ReadCharstelah mencapai akhir aliran karakter, aliran karakter mengembalikan nilai 0 dan pembaca diposisikan setelah tag akhir.Metode baca atribut tidak tersedia saat menggunakan
ReadChars.
Misalnya, menggunakan XML berikut:
<thing>
some text
</thing>
<item>
</item>
Pembaca diposisikan pada <item> elemen di akhir perulangan sementara.
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.
}
}