XNode::CreateReader Method ()


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

Creates an XmlReader for this node.

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

XmlReader^ CreateReader()

Return Value

Type: System.Xml::XmlReader^

An XmlReader that can be used to read this node and its descendants.

You typically use this method when you have to supply another component with an XmlReader. For example, you can create an XmlReader from a LINQ to XML tree, and then pass that reader to Load.

All of the readers returned by Create are normalizing readers. They always perform line break normalization and full normalization of attributes. In contrast, the XmlReader returned by CreateReader is not a normalizing reader. It does not transform any white space. It also returns attributes in the order that they were added, not in attribute name order.

LINQ to XML does not keep information about whether attributes are default attributes. IsDefault will always return false regardless of whether the attribute was populated from a default value or not.

The the PUBLIC and SYSTEM pseudo attributes on XDocumentType are not available through the XmlReader::MoveToAttribute method. They are only available through the XmlReader::GetAttribute method that takes the qualified name of the attribute as a parameter. If you have to retrieve the PUBLIC or SYSTEM attributes, you should use the XmlReader::GetAttribute method.

Base64 and BinHex data are not supported. If you attempt to retrieve these types of data (for example, by calling ReadElementContentAsBase64), the reader will throw NotSupportedException.

The xml declaration is not surfaced by the reader. While reading, you will not encounter a node of type XmlDeclaration.

The following example creates an XML tree, creates an XmlReader by using the CreateReader method, and creates an XmlDocument by using the reader.

No code example is currently available or this language may not be supported.

This example produces the following output:

<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>

Another use for this method is to do an XSLT transformation. You can create an XML tree, create an XmlReader from the XML tree, create a new document, and create an XmlWriter that will write into the new document. Then, you can invoke the XSLT transformation, passing the XmlReader and XmlWriter to the transformation. After the transformation successfully completes, the new XML tree is populated with the results of the transform.

No code example is currently available or this language may not be supported.

This example produces the following output:

  <C1>Child1 data</C1>
  <C2>Child2 data</C2>

Universal Windows Platform
Available since 8
.NET Framework
Available since 3.5
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top