XmlTextReader.GetRemainder 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取已缓冲的 XML 的剩余部分。
public:
System::IO::TextReader ^ GetRemainder();
public System.IO.TextReader GetRemainder ();
member this.GetRemainder : unit -> System.IO.TextReader
Public Function GetRemainder () As TextReader
返回
包含已缓冲的 XML 的剩余部分的 TextReader。
示例
以下示例读取 XML 文档的第一部分,然后使用 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实例,以利用新功能。
由于 XmlTextReader 执行缓冲 Read
,因此它必须能够返回未使用的缓冲区的剩余部分,以便不会丢失任何数据。 这允许协议 ((如多部分 MIME) )将 XML 打包到与其他内容相同的流中。
调用此方法后, EOF 设置为 true
。