Language

XmlReader.Read Method

Definition

When overridden in a derived class, reads the next node from the stream.

public:
 abstract bool Read();
public abstract bool Read();
abstract member Read : unit -> bool
Public MustOverride Function Read () As Boolean

Returns

true if the next node was read successfully; otherwise, false.

Exceptions

An error occurred while parsing the XML.

An XmlReader method was called before a previous asynchronous operation finished. In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Examples

The following example reads an XML file and displays each of the nodes:

XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
XmlReader reader = XmlReader.Create("items.xml", settings);

reader.MoveToContent();
  // 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("", reader.Value);
           break;
       case XmlNodeType.ProcessingInstruction:
           Console.Write("", reader.Name, reader.Value);
           break;
       case XmlNodeType.Comment:
           Console.Write("", reader.Value);
           break;
       case XmlNodeType.XmlDeclaration:
           Console.Write("");
           break;
       case XmlNodeType.Document:
           break;
       case XmlNodeType.DocumentType:
           Console.Write("", reader.Name);
           break;
   }
}

/*
    The example displays the following output:

    Test with an entity: 123Test with a child element  stuff
    Test with a CDATA section ]]> defTest with a char entity: A
    1234567890ABCD
*/
Dim settings As New XmlReaderSettings()
settings.DtdProcessing = DtdProcessing.Parse
Dim reader As XmlReader = XmlReader.Create("items.xml", settings)
reader.MoveToContent()
' 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("", reader.Value)
    Case XmlNodeType.ProcessingInstruction
      Console.Write("", reader.Name, reader.Value)
    Case XmlNodeType.Comment
      Console.Write("", reader.Value)
    Case XmlNodeType.XmlDeclaration
      Console.Write("")
    Case XmlNodeType.Document
    Case XmlNodeType.DocumentType
      Console.Write("", reader.Name)
  End Select
End While

' The example displays the following output:
'
' Test with an entity: 123Test with a child element  stuff
' Test with a CDATA section ]]> defTest with a char entity: A
' 1234567890ABCD

The sample uses the items.xml file.



]>

  Test with an entity: &number;
  Test with a child element  stuff
  Test with a CDATA section ]]> def
  Test with a char entity: A
  
  1234567890ABCD

Output:

Test with an entity: 123Test with a child element  stuffTest with a CDATA section ]]> defTest with a char entity: A1234567890ABCD

Remarks

When an XmlReader is first created and initialized, there is no information available. You must call Read to read the first node. The Read method sets the state of the XML reader to initiate ReadState.Initial and moves through the XML file sequentially until it reaches the end of the file, at which point the method returns a value of false.

This method requires at least four bytes from the data stream in order to begin parsing. If fewer than four bytes are returned and there is no more data in the stream, the method returns false. If there is more data in the stream, the method will block parsing until receipt of the fourth byte.

For the asynchronous version of this method, see ReadAsync.

Applies to