XmlTextReader.ReadChars(Char[], Int32, Int32) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy elem szövegtartalmat olvas be egy karakterpufferbe. Ez a módszer úgy lett kialakítva, hogy egymás után meghívva nagy mennyiségű beágyazott szöveget olvasson be.
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
Paraméterek
- buffer
- Char[]
A szöveg tartalmát tartalmazó pufferként szolgáló karakterek tömbje.
- index
- Int32
Az a pozíció buffer , ahol a metódus megkezdheti a szövegtartalom írását.
- count
- Int32
A beírandó bufferkarakterek száma.
Válaszok
Az olvasási karakterek száma. Ez akkor fordulhat 0 elő, ha az olvasó nem egy elemen van elhelyezve, vagy ha nincs több szöveges tartalom, amelyet vissza szeretne adni az aktuális környezetben.
Kivételek
count nagyobb, mint a buffer (pufferméret – index).
Az buffer érték a következő null: .
index
< 0 vagy count< 0.
Példák
Az alábbi példa XML-ben olvasható a következő paranccsel 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
A példa a items.xml fájlt használja bemenetként.
<?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>
Megjegyzések
Note
Javasoljuk, hogy az új funkciók kihasználásához hozzon létre XmlReader példányokat a XmlReader.Create metódus használatával.
Ez a leghatékonyabb módszer az XML-dokumentumokba beágyazott nagy méretű szövegfolyamok feldolgozására. A nagy sztringobjektumok ReadChars kiosztása helyett egyszerre puffert ad vissza a szöveges tartalomnak. Ez a módszer csak elemcsomópontokon használható. Más csomóponttípusok is okozhatják ReadChars a visszatérést 0.
A következő XML-ben, ha az olvasó a kezdőcímkén van elhelyezve, ReadChars a zárócímke test után adja vissza és helyezi el az olvasót.
<Item>test</Item>
ReadChars a következő funkciókkal rendelkezik:
Ez a módszer csak elemcsomópontokon használható. Más csomóponttípusok 0 értéket adnak
ReadCharsvissza.Ez a metódus a tényleges karaktertartalmat adja vissza. Nincs kísérlet entitások, CDATA vagy bármilyen más korrektúra feloldására.
ReadCharsA kezdőcímke és a zárócímke közötti mindent visszaad, beleértve a korrektúrát is.ReadCharsfigyelmen kívül hagyja a nem megfelelően formázott XML-korrektúrát. Ha például a következő XML-sztringet<A>1<A>2</A>olvassa be,ReadCharsaz eredmény1<A>2</A>. (Visszaadja a korrektúrát az egyező elempárból, és figyelmen kívül hagy másokat.)Ez a módszer nem végez normalizálást.
Amikor
ReadCharselérte a karakterfolyam végét, a 0 értéket adja vissza, és az olvasó a végcímke után van elhelyezve.Az attribútumolvasási metódusok nem érhetők el a használata
ReadCharssorán.
Használja például a következő XML-t:
<thing>
some text
</thing>
<item>
</item>
Az olvasó a <item> ciklus végén található elemen van elhelyezve.
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.
}
}