Este método es similar al método ReadInnerXml, salvo que también devuelve las etiquetas de apertura y de cierre.
Este método controla los nodos de elemento y de atributo de la siguiente manera:
| Tipo de nodo | Posición antes de la llamada | Fragmento XML | Valor devuelto | Posición después de la llamada |
| Element | En la etiqueta de apertura item1. | <item1>text1</item1><item2>text2</item2> | <item1>text1</item1> | En la etiqueta de apertura item2. |
| Attribute | En el nodo de atributo attr1. | <item attr1="val1" attr2="val2">text</item> | attr1="val1" | Permanece en el nodo de atributo attr1. |
Si el lector está situado en un nodo de hoja, llamar a ReadOuterXml equivale a llamar al método Read. El método devuelve String.Empty (excepto en los nodos de atributo, en cuyo caso se devuelve el marcado de atributo).
Este método comprueba si el formato XML es correcto. Si se llama a ReadOuterXml desde XmlValidatingReader, este método valida también el contenido devuelto.
Implementado en las clases XmlNodeReader, XmlTextReader y XmlValidatingReader el método ReadOuterXml reconoce el espacio de nombres. Dado el siguiente texto XML <A xmlns:S="urn:1"><S:B>hello</S:B></A>, si el lector se coloca en la etiqueta de apertura S:B, ReadOuterXml devuelve <S:B xmlns:S="urn:1">hello<S:B/>.