Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
XmlTextReader Class
 GetRemainder Method
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
XmlTextReader..::.GetRemainder Method

Gets the remainder of the buffered XML.

Namespace:  System.Xml
Assembly:  System.Xml (in System.Xml.dll)
Visual Basic (Declaration)
Public Function GetRemainder As TextReader
Visual Basic (Usage)
Dim instance As XmlTextReader
Dim returnValue As TextReader

returnValue = instance.GetRemainder()
C#
public TextReader GetRemainder()
Visual C++
public:
TextReader^ GetRemainder()
JScript
public function GetRemainder() : TextReader

Return Value

Type: System.IO..::.TextReader
A TextReader containing the remainder of the buffered XML.
0c0d7731.alert_note(en-us,VS.90).gifNote:

In the .NET Framework version 2.0 release, the recommended practice is to create XmlReader instances using the XmlReader..::.Create method. This allows you to take full advantage of the new features introduced in this release. For more information, see Creating XML Readers.

Because XmlTextReader does a buffered Read, it must be able to return the remainder of the unused buffer so that no data is lost. This allows protocols (such as multi-part MIME) to package XML in the same stream as other things.

After calling this method, EOF is set to true.

The following example reads the first part of an XML document and then uses GetRemainder to complete reading the document using a second reader.

Visual Basic
Imports System
Imports System.Xml

Public Class Sample
    Private Shared filename As String = "tworeads.xml"

    Public Shared Sub Main()

        Dim reader As New XmlTextReader(filename)
        reader.WhitespaceHandling = WhitespaceHandling.None

        ' Read the first part of the XML document
        While reader.Read()
            ' Display the elements and stop reading on the book endelement tag
            ' then go to ReadPart2 to start another reader to read the rest of the file. 
            Select Case reader.NodeType
                Case XmlNodeType.Element
                    Console.WriteLine("Name: {0}", reader.Name)
                Case XmlNodeType.Text
                    Console.WriteLine("  Element Text: {0}", reader.Value)
                Case XmlNodeType.EndElement
                    ' Stop reading when the reader gets to the end element of the book node.
                    If "book" = reader.LocalName Then
                        Console.WriteLine("End reading first book...")
                        Console.WriteLine()
                        GoTo ReadPart2
                    End If
            End Select
        End While

        ' Read the rest of the XML document
        ReadPart2: 
        Console.WriteLine("Begin reading second book...")

        ' Create a new reader to read the rest of the document.
        Dim reader2 As New XmlTextReader(reader.GetRemainder())

        While reader2.Read()
            Select Case reader2.NodeType
                Case XmlNodeType.Element
                    Console.WriteLine("Name: {0}", reader2.Name)
                Case XmlNodeType.Text
                    Console.WriteLine("  Element Text: {0}", reader2.Value)
                Case XmlNodeType.EndElement
                    'Stop reading when the reader gets to the end element of the book node.
                    If "book" = reader2.LocalName Then
                        Console.WriteLine("End reading second book...")
                        GoTo Done
                    End If
            End Select
        End While

        Done: 
        Console.WriteLine("Done.")
        reader.Close()
        reader2.Close()
    End Sub 'Main
End Class 'Sample

C#
using System;
using System.Xml; 

public class Sample {

  private static string filename = "tworeads.xml";

  public static void Main() {

    XmlTextReader reader = new XmlTextReader(filename);
    reader.WhitespaceHandling=WhitespaceHandling.None;

    // Read the first part of the XML document
    while(reader.Read()) {
      // Display the elements and stop reading on the book endelement tag
      // then go to ReadPart2 to start another reader to read the rest of the file. 
      switch(reader.NodeType) {
       case XmlNodeType.Element:
        Console.WriteLine("Name: {0}", reader.Name);
        break;
       case XmlNodeType.Text:
        Console.WriteLine("  Element Text: {0}", reader.Value);
        break;
       case XmlNodeType.EndElement:
        // Stop reading when the reader gets to the end element of the book node.
        if ("book"==reader.LocalName) {
          Console.WriteLine("End reading first book...");
          Console.WriteLine();      
          goto ReadPart2;
        }
        break;
      } 
    } 

    // Read the rest of the XML document
    ReadPart2:
    Console.WriteLine("Begin reading second book...");

    // Create a new reader to read the rest of the document.
    XmlTextReader reader2 = new XmlTextReader(reader.GetRemainder());

    while(reader2.Read()) {
      switch (reader2.NodeType) {
        case XmlNodeType.Element:
         Console.WriteLine("Name: {0}", reader2.Name);
         break;
        case XmlNodeType.Text:
         Console.WriteLine("  Element Text: {0}", reader2.Value);
         break;
        case XmlNodeType.EndElement:
         // Stop reading when the reader gets to the end element of the book node.
         if ("book"==reader2.LocalName) {
           Console.WriteLine("End reading second book...");
           goto Done;
         }
         break;
      }
    }

    Done:
    Console.WriteLine("Done.");
    reader.Close(); 
    reader2.Close();
  }
}//End class

Visual C++
#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
int main()
{
   String^ filename = "tworeads.xml";
   XmlTextReader^ reader = gcnew XmlTextReader( filename );
   reader->WhitespaceHandling = WhitespaceHandling::None;

   // Read the first part of the XML document
   while ( reader->Read() )
   {

      // Display the elements and stop reading on the book endelement tag
      // then go to ReadPart2 to start another reader to read the rest of the file. 
      switch ( reader->NodeType )
      {
         case XmlNodeType::Element:
            Console::WriteLine( "Name: {0}", reader->Name );
            break;

         case XmlNodeType::Text:
            Console::WriteLine( "  Element Text: {0}", reader->Value );
            break;

         case XmlNodeType::EndElement:

            // Stop reading when the reader gets to the end element of the book node.
            if ( "book" == reader->LocalName )
            {
               Console::WriteLine( "End reading first book..." );
               Console::WriteLine();
               goto ReadPart2;
            }
            break;
      }
   }


   // Read the rest of the XML document

ReadPart2:
   Console::WriteLine( "Begin reading second book..." );

   // Create a new reader to read the rest of the document.
   XmlTextReader^ reader2 = gcnew XmlTextReader( reader->GetRemainder() );
   while ( reader2->Read() )
   {
      switch ( reader2->NodeType )
      {
         case XmlNodeType::Element:
            Console::WriteLine( "Name: {0}", reader2->Name );
            break;

         case XmlNodeType::Text:
            Console::WriteLine( "  Element Text: {0}", reader2->Value );
            break;

         case XmlNodeType::EndElement:

            // Stop reading when the reader gets to the end element of the book node.
            if ( "book" == reader2->LocalName )
            {
               Console::WriteLine( "End reading second book..." );
               goto Done;
            }
            break;
      }
   }


Done:
   Console::WriteLine( "Done." );
   reader->Close();
   reader2->Close();
}


J#
import System.*;
import System.Xml.*;

public class Sample
{
    private static String fileName = "tworeads.xml";

    public static void main(String[] args)
    {
        XmlTextReader reader = new XmlTextReader(fileName);
        reader.set_WhitespaceHandling(WhitespaceHandling.None);

        // Read the first part of the XML document
        while (reader.Read()) {

            // Display the elements and stop reading on the book endelement tag
            // then go to ReadPart2 to start another reader to read the rest
            // of the file. 
            switch (reader.get_NodeType()) {
                case XmlNodeType.Element :
                    Console.WriteLine("Name: {0}", reader.get_Name());
                    break;
                case XmlNodeType.Text :
                    Console.WriteLine("  Element Text: {0}", reader.get_Value());
                    break;
                case XmlNodeType.EndElement :

                    // Stop reading when the reader gets to the end element 
                    //of the book node.
                    if ("book".Equals(reader.get_LocalName())) {
                        Console.WriteLine("End reading first book...");
                        Console.WriteLine();
                    }
                    break;
            }
        }

        // Read the rest of the XML document
        // Create a new reader to read the rest of the document.
        XmlTextReader reader2 = new XmlTextReader(reader.GetRemainder());
        while (reader2.Read()) {
            switch (reader2.get_NodeType()) {
                case XmlNodeType.Element :
                    Console.WriteLine("Name: {0}", reader2.get_Name());
                    break;
                case XmlNodeType.Text :
                    Console.WriteLine
                        ("  Element Text: {0}", reader2.get_Value());
                    break;
                case XmlNodeType.EndElement :
                    // Stop reading when the reader gets to the end element
                    // of the book node.
                    if ("book".Equals(reader2.get_LocalName())) {
                        Console.WriteLine("End reading second book...");
                    }
                    break;
            }
        }
        reader.Close();
        reader2.Close();
    } //main
}//End class Sample

The example uses the input file tworeads.xml.

<?xml version="1.0" ?>
<bookstore>
 <book>
  <title>Pride And Prejudice</title>
  <author>Jane Austen</author>
 </book>
 <book>
  <title>The Handmaid's Tale</title>
  <author>Margaret Atwood</author>
 </book>
</bookstore>

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 2.0, 1.0
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker