MSDN Documentation

System.Xml Namespace

Provides classes for working with XML documents.

XmlReader Class

Represents a reader that provides fast, forward-only access to a stream of XML data.

Dispose Method (System.Xml.XmlReader)

Releases the unmanaged resources used by the XmlReader and optionally releases the managed resources.

Syntax

public virtual void Dispose(bool disposing)

Parameters

disposing
true to release both managed and unmanaged resources; false to release only unmanaged resources.

Remarks

The Dispose method is used to clean up resources held by the XmlReader object. When disposing is true, it closes the underlying stream and releases any associated unmanaged resources. It's a common practice to call Dispose when you are finished with an XmlReader instance to prevent resource leaks.

If you are using the XmlReader within a using statement (in C#) or a Using...End Using block (in Visual Basic), the Dispose method is automatically called for you when the block is exited.

This method is called by the public Dispose() method and the finalizer.

Example

Here's how you can use the XmlReader and ensure it's disposed correctly:

// C# Example
using System.Xml;

public class Example
{
    public static void Main(string[] args)
    {
        string xmlString = @"<root><element>Hello, World!</element></root>";

        using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
        {
            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                    case XmlNodeType.Element:
                        Console.WriteLine("Start Element '{0}'", reader.Name);
                        break;
                    case XmlNodeType.Text:
                        Console.WriteLine("Text: '{0}'", reader.Value);
                        break;
                    case XmlNodeType.XmlDeclaration:
                    case XmlNodeType.DocumentType:
                        break; // Ignore these node types for this example
                    case XmlNodeType.EndElement:
                        Console.WriteLine("End Element '{0}'", reader.Name);
                        break;
                }
            }
        } // reader.Dispose() is called automatically here
    }
}

See Also