This documentation is archived and is not being maintained.

Reading Content

The XmlReader class includes members that can be used to read content.


The members described in this topic return content as string values. If you want to read typed content, see Reading Typed Data.

The Value property can be used to get the text content of the current node. The value returned depends on the node type of the current node. The following table describes the content returned for each of the possible node types.

Node type



The value of the attribute.


The content of the CDATA section.


The content of the comment.


The internal subset.


The entire content, excluding the target.


The white space between any markup in a mixed content model.


The content of the text node.


The white space between markup.


The content of the declaration.

All other node types

An empty string.

The ReadString method returns the content of an element or text node as a string.

If the XmlReader is positioned on an element, ReadString concatenates all text, significant white space, white space, and CDATA section nodes together and returns the concatenated data as the element content. The reader stops when any markup is encountered. This could occur in a mixed content model, or when an element end tag is read.

If the XmlReader is positioned on a text node, ReadString performs the same concatenation of text, significant white space, white space, and CDATA section nodes. The reader stops on the first node that is not one of the previously named types. If the reader is positioned on an attribute text node, ReadString has the same functionality as if the reader were position on the element start tag. It returns all the concatenated element text nodes.


The ReadString method stops on processing instructions and comments. It does not ignore them.

The ReadInnerXml 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 XML string <node>this<child id="123"/></node>, ReadInnerXml would return this<child id="123"/>.

The following table describes how element and attribute nodes are handled.

Node type



XML fragment






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 ReadOuterXml method returns all the XML content, including markup, of the current node and all its children. Its behavior is similar to ReadInnerXml, except it also returns the start and end tags.

Using the values in the table above, if the reader is positioned on the item1 start tag, ReadOuterXml returns <item1>text1</item1>. If the reader is positioned on the attr1 attribute node, ReadOuterXml returns attr1="val1".