Freigeben über


XmlTextReader.ReadChars-Methode

Liest den Textinhalt eines Elements in einen Zeichenpuffer. Diese Methode ist dafür entworfen, umfangreiche Streams mit eingebettetem Text mithilfe aufeinander folgender Aufrufe zu lesen.

Namespace: System.Xml
Assembly: System.Xml (in system.xml.dll)

Syntax

'Declaration
Public Function ReadChars ( _
    buffer As Char(), _
    index As Integer, _
    count As Integer _
) As Integer
'Usage
Dim instance As XmlTextReader
Dim buffer As Char()
Dim index As Integer
Dim count As Integer
Dim returnValue As Integer

returnValue = instance.ReadChars(buffer, index, count)
public int ReadChars (
    char[] buffer,
    int index,
    int count
)
public:
int ReadChars (
    array<wchar_t>^ buffer, 
    int index, 
    int count
)
public int ReadChars (
    char[] buffer, 
    int index, 
    int count
)
public function ReadChars (
    buffer : char[], 
    index : int, 
    count : int
) : int

Parameter

  • buffer
    Das Array von Zeichen, das als Puffer dient, in den der Textinhalt geschrieben wird.
  • index
    Die Position innerhalb des buffer, an der die Methode mit dem Schreiben von Textinhalt beginnen kann.
  • count
    Die Anzahl der in den buffer zu schreibenden Zeichen.

Rückgabewert

Die Anzahl der gelesenen Zeichen. Diese kann 0 (null) sein, wenn der Reader nicht auf einem Element positioniert ist oder kein weiterer Textinhalt vorhanden ist, der im aktuellen Kontext zurückgegeben werden kann.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentException

count ist größer als der im buffer angegebene Bereich (Puffergröße - index).

ArgumentNullException

Der buffer-Wert ist NULL (Nothing in Visual Basic).

ArgumentOutOfRangeException

index < 0 oder count< 0.

Hinweise

Hinweis

Die empfohlene Vorgehensweise für die Version Microsoft .NET Framework, Version 2.0 besteht darin, mithilfe der System.Xml.XmlReader.Create-Methode XmlReader-Instanzen zu erstellen. So können Sie die neuen Features dieser Version in vollem Umfang nutzen. Weitere Informationen finden Sie unter Erstellen von XML-Readern.

Dies ist die effektivste Art, sehr umfangreiche Streams mit in ein XML-Dokument eingebettetem Text zu verarbeiten. Anstatt große Zeichenfolgenobjekte zu reservieren, gibt ReadChars Textinhalt aus einem Puffer nach dem anderen zurück. Diese Methode ist ausschließlich für die Arbeit mit Elementknoten vorgesehen. Bei anderen Knotentypen gibt ReadChars den Wert 0 (null) zurück.

Im folgenden XML-Beispiel gibt ReadCharstest zurück, wenn der Reader auf dem Starttag positioniert ist, und positioniert den Reader dann hinter dem Endtag.

<Item>test</Item>

ReadChars hat folgende Funktionen:

  • Diese Methode ist ausschließlich für die Arbeit mit Elementknoten vorgesehen. Bei anderen Knotentypen gibt ReadChars den Wert 0 (null) zurück.

  • Diese Methode gibt den tatsächlichen Zeicheninhalt zurück. Es wird kein Versuch unternommen, Entitäten, CDATA oder anderes angetroffenes Markup aufzulösen. ReadChars gibt den gesamten Inhalt zwischen dem Starttag und dem Endtag einschließlich Markup zurück.

  • ReadChars ignoriert nicht wohlgeformtes XML-Markup. Beim Lesen der folgenden XML-Zeichenfolge <A>1<A>2</A> gibt ReadChars z. B. 1<A>2</A> zurück. (Markup aus dem übereinstimmenden Elementpaar wird zurückgegeben, anderes Markup wird ignoriert.)

  • Diese Methode nimmt keine Normalisierung vor.

  • Wenn ReadChars das Ende des Zeichenstreams erreicht hat, wird der Wert 0 (null) zurückgegeben, und der Reader wird hinter den Endtag positioniert.

  • Während der Verwendung von ReadChars sind keine Attributlesemethoden verfügbar.

Dies gilt z. B. bei Verwendung der folgenden XML-Elemente:

 <thing>
  some text
 </thing>
 <item>
 </item>

Der Reader wird auf dem <item>-Element am Ende der while-Schleife positioniert.

 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.
  }
 }

Beispiel

Im folgenden Beispiel wird XML mithilfe vonReadChars eingelesen.

Imports System
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 
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
#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;

// Reads an XML document using ReadChars
int main()
{
   XmlTextReader^ reader = nullptr;
   String^ filename = "items.xml";
   try
   {
      
      // Declare variables used by ReadChars
      array<Char>^buffer;
      int iCnt = 0;
      int charbuffersize;
      
      // Load the reader with the data file.  Ignore white space.
      reader = gcnew XmlTextReader( filename );
      reader->WhitespaceHandling = WhitespaceHandling::None;
      
      // Set variables used by ReadChars.
      charbuffersize = 10;
      buffer = gcnew array<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:{0}", iCnt );
         Console::WriteLine( "  Buffer: [{0}]", gcnew String( buffer,0,iCnt ) );
         
         // Clear the buffer.
         Array::Clear( buffer, 0, charbuffersize );
      }
   }
   finally
   {
      if ( reader != nullptr )
            reader->Close();
   }

}
import System.*;
import System.Xml.*;

// Reads an XML document using ReadChars
public class Sample
{
    private static String fileName = "items.xml";

    public static void main(String[] args)
    {
        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.set_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();
            }
        }
    } //main
} // End class Sample

Im Beispiel wird die Datei items.xml als Eingabe verwendet.

<?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: &#65;</Item>
  <!-- Fourteen chars in this element.-->
  <Item>1234567890ABCD</Item>
</Items>

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

XmlTextReader-Klasse
XmlTextReader-Member
System.Xml-Namespace
ReadBase64
ReadBinHex

Weitere Ressourcen

Lesen von XML mit dem "XmlReader"