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, büyük katıştırılmış metin akışlarını ardışık olarak çağırarak 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örecek karakter dizisi.
- index
- Int32
Yöntemin metin içeriğini yazmaya başlayabildiği konum buffer .
- count
- Int32
içine yazacak bufferkarakter 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.
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
Örnek, girdi olarak dosyasını kullanı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
Note
XmlReader öneririz. Yeni işlevlerden yararlanmak için XmlReader.Create yöntemini kullanarak örnekler oluşturmanız.
Bu, XML belgesine eklenmiş çok büyük metin akışlarını işlemenin en verimli yoludur. Büyük dize nesnelerini ayırmak yerine, ReadChars metin içeriğini bir kerede bir 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 ReadCharsneden olur0.
Aşağıdaki XML'de, okuyucu başlangıç etiketine konumlandırılmışsa okuyucuyu ReadChars döndürür test ve bitiş etiketinden sonra konumlandırılır.
<Item>test</Item>
ReadChars aşağıdaki işlevlere sahiptir:
Bu yöntem yalnızca öğe düğümlerinde çalışacak şekilde tasarlanmıştır. Diğer düğüm türleri 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ıç etiketi ile bitiş etiketi arasındaki her şeyi döndürür.ReadCharsdüzgün biçimlendirilmemiş XML işaretlemesini 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 öğesinde 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.
}
}