XmlReader::ReadInnerXml Method ()


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

When overridden in a derived class, reads all the content, including markup, as a string.

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

virtual String^ ReadInnerXml()

Return Value

Type: System::String^

All the XML content, including markup, in the current node. If the current node has no children, an empty string is returned.

If the current node is neither an element nor attribute, an empty string is returned.

Exception Condition

The XML was not well-formed, or 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.”

This method returns all the content of the current node including the markup. The current node (start tag) and corresponding end node (end tag) are not returned. For example, if you had the following:

 this <child id="123"/>

ReadInnerXml returns this <child id="123"/>

This method handles element and attribute nodes in the following manner:

Node type

Position before the call

XML fragment

Return value

Position after the call


On the item1 start tag.



On the item2 start tag.


On the attr1 attribute node.

<item attr1="val1" attr2="val2">text</item>


Remains on the attr1 attribute node.

If the reader is positioned on a leaf node, calling ReadInnerXml is equivalent to calling Read. The method returns String.Empty (except for attribute nodes, in which case the value of the attribute is returned).

This method checks for well-formed XML. If ReadInnerXml is called from an XmlValidatingReader, this method also validates the content returned.

As implemented in the XmlNodeReader, XmlTextReader and XmlValidatingReader classes the ReadOuterXml method is namespace aware.

For the asynchronous version of this method, see ReadInnerXmlAsync.

The following example compares the ReadInnerXml and ReadOuterXml methods.

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

The example uses 2books.xml file as input.

<!--sample XML fragment-->
  <book genre='novel' ISBN='10-861003-324'>
    <title>The Handmaid's Tale</title>
  <book genre='novel' ISBN='1-861001-57-5'>
    <title>Pride And Prejudice</title>

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
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