XmlTextReader::Read Method ()
Reads the next node from the stream.
Assembly: System.Xml (in System.Xml.dll)
Return Value
Type: System::Booleantrue if the next node was read successfully; false if there are no more nodes to read.
| Exception | Condition |
|---|---|
| XmlException | An error occurred while parsing the XML. |
Note |
|---|
Starting with the .NET Framework 2.0, we recommend that you create XmlReader instances by using the XmlReader::Create method to take advantage of new functionality. |
When a reader is first created and initialized, there is no information available. You must call Read to read the first node.
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 will fail. If there is more data in the stream, the method will block parsing until receipt of the fourth byte.
The following example reads an XML file and displays each node.
#using <System.Xml.dll> using namespace System; using namespace System::IO; using namespace System::Xml; int main() { XmlTextReader^ reader = nullptr; String^ filename = "items.xml"; try { // Load the reader with the data file and ignore all white space nodes. reader = gcnew 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 != nullptr ) reader->Close(); } }
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>
Available since 1.1
