次の方法で共有


XmlTextReader.GetRemainder メソッド

定義

バッファー内の XML の剰余を取得します。

public:
 System::IO::TextReader ^ GetRemainder();
public System.IO.TextReader GetRemainder ();
member this.GetRemainder : unit -> System.IO.TextReader
Public Function GetRemainder () As TextReader

戻り値

TextReader

バッファー内の XML の剰余を格納している TextReader

次の例では、XML ドキュメントの最初の部分を読み取り、2 番目のリーダーを使用してドキュメントの読み取りを完了するために使用 GetRemainder します。

#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();
}
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
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
End Class

この例では、入力ファイル 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>

注釈

注意

.NET Framework 2.0 以降では、このメソッドを使用してXmlReader.Create新しい機能を利用してインスタンスを作成XmlReaderすることをお勧めします。

バッファー処理をRead行うためXmlTextReader、データが失われないように、未使用のバッファーの残りの部分を返すことができる必要があります。 これにより、プロトコル (マルチパート MIME など) は、他のものと同じストリームに XML をパッケージ化できます。

このメソッドを呼び出した後、 EOF に設定 trueされます。

適用対象

こちらもご覧ください