System.Xml.XmlReader.ReadOuterXml Method

When overridden in a derived class, reads the content, including markup, representing this node and all its children.

Syntax

public virtual string ReadOuterXml ()

Returns

If the reader is positioned on an element or an attribute node, this method returns all the XML content, including markup, of the current node and all its children; otherwise, it returns an empty string.

Exceptions

TypeReason
System.Xml.XmlExceptionThe XML was not well-formed, or an error occurred while parsing the XML.

Remarks

This method is similar to XmlReader.ReadInnerXml except it also returns the start and end tags.

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

Element

On the item1 start tag.

<item1>text1</item1><item2>text2</item2>

<item1>text1</item1>

On the item2 start tag.

Attribute

On the attr1 attribute node.

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

attr1="val1"

Remains on the attr1 attribute node.

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

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

As implemented in the System.Xml.XmlNodeReader, System.Xml.XmlTextReader and XmlValidatingReader classes the ReadOuterXml method is namespace aware. Given the following XML text <A xmlns:S="urn:1"><S:B>hello</S:B></A>, if the reader were positioned on the S:B start tag, ReadOuterXml returns <S:B xmlns:S="urn:1">hello<S:B/>.

For the asynchronous version of this method, see XmlReader.ReadOuterXmlAsync.

Requirements

Namespace: System.Xml
Assembly: System.Xml (in System.Xml.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0, 4.0.0.0