Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

XmlReader.Read Method

Definition

Namespace:
System.Xml
Assemblies:
System.Xml.dll, System.Xml.ReaderWriter.dll
Assemblies:
netstandard.dll, System.Xml.ReaderWriter.dll
Assembly:
System.Xml.ReaderWriter.dll
Assembly:
System.Xml.dll
Assembly:
netstandard.dll
Source:
XmlReader.cs
Source:
XmlReader.cs
Source:
XmlReader.cs
Source:
XmlReader.cs
Source:
XmlReader.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

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("<![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;
 }
}

/*
 The example displays the following output:

 <Item>Test with an entity: 123</Item><Item>Test with a child element <more> stuff</Item>
 <Item>Test with a CDATA section <![CDATA[<456>]]> def</Item><Item>Test with a char entity: A</Item>
 <!-- Fourteen chars in this element.--><Item>1234567890ABCD</Item></Items>
*/
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("<![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

' The example displays the following output:
'
' <Item>Test with an entity: 123</Item><Item>Test with a child element <more> stuff</Item>
' <Item>Test with a CDATA section <![CDATA[<456>]]> def</Item><Item>Test with a char entity: A</Item>
' <!-- Fourteen chars in this element.--><Item>1234567890ABCD</Item></Items>

The sample uses the items.xml file.

<?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 a char entity: A</Item>
 <!-- Fourteen chars in this element.-->
 <Item>1234567890ABCD</Item>
</Items>

Output:

<Item>Test with an entity: 123</Item><Item>Test with a child element <more> stuff</Item><Item>Test with a CDATA section <![CDATA[<456>]]> def</Item><Item>Test with a char entity: A</Item><!-- Fourteen chars in this element.--><Item>1234567890ABCD</Item></Items>

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


Feedback

Was this page helpful?