XmlTextReader.ReadChars(Char[], Int32, Int32) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir öğenin metin içeriğini karakter arabelleğine okur. Bu yöntem, ekli metinleri ardışık olarak çağırarak büyük metin akışlarını okumak için tasarlanmıştır.
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
Parametreler
- buffer
- Char[]
Metin içeriğinin yazıldığı arabellek görevi gören karakter dizisi.
- index
- Int32
yönteminin metin içeriği yazmaya başlayabildiği konum buffer .
- count
- Int32
içine bufferyazacak karakter sayısı.
Döndürülenler
Okunan karakter sayısı. Bu, okuyucu bir öğeye konumlandırılmadıysa veya geçerli bağlamda döndürülecek başka metin içeriği yoksa olabilir 0 .
Özel durumlar
count içinde belirtilen buffer alandan büyüktür (arabellek boyutu - index).
buffer değeri null olur.
index
< 0veya .count< 0
Örnekler
Aşağıdaki örnek kullanarak ReadCharsXML'de okur.
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
Örnekte giriş olarak dosya kullanılır items.xml .
<?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>
Açıklamalar
Not
.NET Framework 2.0'dan başlayarak, yeni işlevlerden yararlanmak için yöntemini kullanarak XmlReader.Create örnekler oluşturmanızı XmlReader öneririz.
Bu, XML belgesine eklenmiş çok büyük metin akışlarını işlemenin en verimli yoludur. Büyük dize nesnelerini ayırmaktansa, ReadChars metin içeriğini bir kerede arabelleğe döndürür. Bu yöntem yalnızca öğe düğümlerinde çalışacak şekilde tasarlanmıştır. Diğer düğüm türleri döndürülmeye 0neden olurReadChars.
Aşağıdaki XML'de okuyucu başlangıç etiketine konumlandırılmışsa okuyucuyu ReadCharstest döndürür ve bitiş etiketinden sonra yerleştirir.
<Item>test</Item>
ReadChars aşağıdaki işlevlere sahiptir:
Bu yöntem yalnızca öğe düğümleri üzerinde çalışacak şekilde tasarlanmıştır. Diğer düğüm türlerinin 0 döndürmesine neden olur
ReadChars.Bu yöntem gerçek karakter içeriğini döndürür. Varlıkları, CDATA'yı veya karşılaşılan başka bir işaretlemeyi çözümleme girişimi yoktur.
ReadChars, işaretleme dahil olmak üzere başlangıç etiketiyle bitiş etiketi arasındaki her şeyi döndürür.ReadCharsdüzgün biçimlendirilmemiş XML işaretlemelerini yoksayar. Örneğin, aşağıdaki XML dizesini<A>1<A>2</A>okurken döndürürReadChars1<A>2</A>. (Eşleşen öğe çiftinden işaretleme döndürür ve diğerlerini yoksayar.)Bu yöntem herhangi bir normalleştirme yapmaz.
ReadCharsKarakter akışının sonuna ulaştığında 0 değerini döndürür ve okuyucu bitiş etiketinden sonra konumlandırılır.öznitelik okuma yöntemleri kullanılırken
ReadCharskullanılamaz.
Örneğin, aşağıdaki XML'yi kullanarak:
<thing>
some text
</thing>
<item>
</item>
Okuyucu while döngüsünün <item> sonunda öğeye konumlandırılır.
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.
}
}