Reads the next node from the stream.
[Visual Basic]
Overrides Public Function Read() As Boolean
[C#]
public override bool Read();
[C++]
public: bool Read();
[JScript]
public override function Read() : Boolean;
Return Value
true if the next node was read successfully; false if there are no more nodes to read.
Exceptions
| Exception Type | Condition |
| XmlException | An error occurred while parsing the XML. |
Remarks
When a reader is first created and initialized, there is no information available. You must call Read to read the first node.
Example
[Visual Basic, C#, C++] The following example reads an XML file and displays each node.
[Visual Basic]
Option Strict
Option Explicit
Imports System
Imports System.IO
Imports System.Xml
'Reads an XML document
Public Class Sample
Private Const filename As String = "items.xml"
Public Shared Sub Main()
Dim reader As XmlTextReader = Nothing
Try
' Load the reader with the data file and ignore all white space nodes.
reader = New XmlTextReader(filename)
reader.WhitespaceHandling = WhitespaceHandling.None
' Parse the file and display each of the nodes.
While reader.Read()
Select Case reader.NodeType
Case XmlNodeType.Element
Console.Write("<{0}>", reader.Name)
Case XmlNodeType.Text
Console.Write(reader.Value)
Case XmlNodeType.CDATA
Console.Write("<![CDATA[{0}]]>", reader.Value)
Case XmlNodeType.ProcessingInstruction
Console.Write("<?{0} {1}?>", reader.Name, reader.Value)
Case XmlNodeType.Comment
Console.Write("<!--{0}-->", reader.Value)
Case XmlNodeType.XmlDeclaration
Console.Write("<?xml version='1.0'?>")
Case XmlNodeType.Document
Case XmlNodeType.DocumentType
Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value)
Case XmlNodeType.EntityReference
Console.Write(reader.Name)
Case XmlNodeType.EndElement
Console.Write("</{0}>", reader.Name)
End Select
End While
Finally
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub 'Main
End Class 'Sample
[C#]
using System;
using System.IO;
using System.Xml;
public class Sample {
private const String filename = "items.xml";
public static void Main() {
XmlTextReader reader = null;
try {
// Load the reader with the data file and ignore all white space nodes.
reader = new XmlTextReader(filename);
reader.WhitespaceHandling = WhitespaceHandling.None;
// Parse the file and display each of the nodes.
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.Element:
Console.Write("<{0}>", reader.Name);
break;
case XmlNodeType.Text:
Console.Write(reader.Value);
break;
case XmlNodeType.CDATA:
Console.Write("<![CDATA[{0}]]>", reader.Value);
break;
case XmlNodeType.ProcessingInstruction:
Console.Write("<?{0} {1}?>", reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
Console.Write("<!--{0}-->", reader.Value);
break;
case XmlNodeType.XmlDeclaration:
Console.Write("<?xml version='1.0'?>");
break;
case XmlNodeType.Document:
break;
case XmlNodeType.DocumentType:
Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
break;
case XmlNodeType.EntityReference:
Console.Write(reader.Name);
break;
case XmlNodeType.EndElement:
Console.Write("</{0}>", reader.Name);
break;
}
}
}
finally {
if (reader!=null)
reader.Close();
}
}
} // End class
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main() {
XmlTextReader* reader = 0;
String* filename = S"items.xml";
try {
// Load the reader with the data file and ignore all white space nodes.
reader = new XmlTextReader(filename);
reader->WhitespaceHandling = WhitespaceHandling::None;
// Parse the file and display each of the nodes.
while (reader->Read()) {
switch (reader->NodeType) {
case XmlNodeType::Element:
Console::Write(S"<{0}>", reader->Name);
break;
case XmlNodeType::Text:
Console::Write(reader->Value);
break;
case XmlNodeType::CDATA:
Console::Write(S"<![CDATA[{0}]]>", reader->Value);
break;
case XmlNodeType::ProcessingInstruction:
Console::Write(S"<?{0} {1}?>", reader->Name, reader->Value);
break;
case XmlNodeType::Comment:
Console::Write(S"<!--{0}-->", reader->Value);
break;
case XmlNodeType::XmlDeclaration:
Console::Write(S"<?xml version='1.0'?>");
break;
case XmlNodeType::Document:
break;
case XmlNodeType::DocumentType:
Console::Write(S"<!DOCTYPE {0} [{1}]", reader->Name, reader->Value);
break;
case XmlNodeType::EntityReference:
Console::Write(reader->Name);
break;
case XmlNodeType::EndElement:
Console::Write(S"</{0}>", reader->Name);
break;
}
}
}
__finally {
if (reader!=0)
reader->Close();
}
}
[Visual Basic, C#, C++] The sample uses the file items.xml.
<?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>
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework, Common Language Infrastructure (CLI) Standard
See Also
XmlTextReader Class | XmlTextReader Members | System.Xml Namespace | EntityHandling