XmlTextReader.ReadChars(Char[], Int32, Int32) Metode

Definisi

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 ReadChars pengembalian 0.

  • Metode ini mengembalikan konten karakter aktual. Tidak ada upaya untuk menyelesaikan entitas, CDATA, atau markup lain yang ditemui. ReadChars mengembalikan semuanya antara tag mulai dan tag akhir, termasuk markup.

  • ReadChars mengabaikan markup XML yang tidak terbentuk dengan baik. Misalnya, saat membaca string <A>1<A>2</A>XML berikut, ReadChars mengembalikan 1<A>2</A>. (Ini mengembalikan markup dari pasangan elemen yang cocok dan mengabaikan orang lain.)

  • Metode ini tidak melakukan normalisasi apa pun.

  • Ketika ReadChars telah 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.
 }
}

Berlaku untuk

Lihat juga