XPathDocument Constructor (XmlReader)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Initializes a new instance of the XPathDocument class from the XML data that is contained in the specified XmlReader object.

Namespace:   System.Xml.XPath
Assembly:  System.Xml (in System.Xml.dll)

public XPathDocument(
	XmlReader reader


Type: System.Xml.XmlReader

The XmlReader object that contains the XML data.

Exception Condition

An error was encountered in the XML data. The XPathDocument remains empty.


The XmlReader object passed as a parameter is null.

An XmlReader object can be used to load a whole XML document or part of an XML document into an XPathDocument. To load part of an XML document into an XPathDocument, position the XmlReader object on the top XML node to load data from. When you create an XPathDocument by using the XPathDocument constructor, data is loaded from the current top node through all its siblings. Afterwards, the XmlReader is positioned on the outer scope of the top XML node. Alternatively, you can use the ReadSubtree method to load the XPathDocument into a particular element in the XML document.

The following are important notes to consider when you use the XPathDocument constructor.

  • An XmlReader object with the appropriate associated XmlResolver object settings can be used to resolve entities or other references in XML data.

  • If the XmlReader object is positioned on a leaf node that is not valid for the root level of a document—for example, a white space or attribute node—the XmlReader object continues to read until it is positioned on a node that can be used for the root. The XPathDocument begins loading at this point.

  • To preserve white space, use the XPathDocument constructor that accepts an XmlSpace object as a parameter.

.NET Framework
Available since 1.1
Return to top