XmlReader.ReadOuterXml XmlReader.ReadOuterXml XmlReader.ReadOuterXml XmlReader.ReadOuterXml Method

Definición

Cuando se invalida en una clase derivada, lee el contenido, incluido el marcado, que representa este nodo y todos sus nodos secundarios.When overridden in a derived class, reads the content, including markup, representing this node and all its children.

public:
 virtual System::String ^ ReadOuterXml();
public virtual string ReadOuterXml ();
abstract member ReadOuterXml : unit -> string
override this.ReadOuterXml : unit -> string
Public Overridable Function ReadOuterXml () As String

Devoluciones

Si el lector está situado en un nodo de elemento o de atributo, este método devuelve todo el contenido XML, incluido el marcado, del nodo actual y de todos sus nodos secundarios; en caso contrario, devuelve una cadena vacía.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.

Excepciones

El fragmento de XML no está bien formado o se ha producido un error al analizarlo.The XML was not well-formed, or an error occurred while parsing the XML.

Se llamó un método XmlReader antes de que se termine una operación asincrónica anterior.An XmlReader method was called before a previous asynchronous operation finished. En este caso, se genera InvalidOperationException con el mensaje “Ya hay una operación asincrónica en curso”.In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Ejemplos

En el ejemplo siguiente se comparan los ReadInnerXml métodos y. ReadOuterXmlThe following example compares the ReadInnerXml and ReadOuterXml methods.

// Load the file and ignore all white space.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
using (XmlReader reader = XmlReader.Create("2books.xml")) {

  // Moves the reader to the root element.
  reader.MoveToContent();
 
  // Moves to book node.
  reader.Read(); 

  // Note that ReadInnerXml only returns the markup of the node's children
  // so the book's attributes are not returned.
  Console.WriteLine("Read the first book using ReadInnerXml...");
  Console.WriteLine(reader.ReadInnerXml());

  // ReadOuterXml returns the markup for the current node and its children
  // so the book's attributes are also returned.
  Console.WriteLine("Read the second book using ReadOuterXml...");
  Console.WriteLine(reader.ReadOuterXml());      

}
' Load the file and ignore all white space.
Dim settings As New XmlReaderSettings()
settings.IgnoreWhitespace = True
Using reader As XmlReader = XmlReader.Create("2books.xml")

  ' Moves the reader to the root element.
  reader.MoveToContent()
                
  ' Moves to book node.
  reader.Read()
                
  ' Note that ReadInnerXml only returns the markup of the node's children
  ' so the book's attributes are not returned.
  Console.WriteLine("Read the first book using ReadInnerXml...")
  Console.WriteLine(reader.ReadInnerXml())
                
  ' ReadOuterXml returns the markup for the current node and its children
  ' so the book's attributes are also returned.
  Console.WriteLine("Read the second book using ReadOuterXml...")
  Console.WriteLine(reader.ReadOuterXml())

End Using

En el ejemplo 2books.xml se usa el archivo como entrada.The example uses 2books.xml file as input.

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

Comentarios

Este método es similar a ReadInnerXml , salvo que también devuelve las etiquetas de inicio y fin.This method is similar to ReadInnerXml except it also returns the start and end tags.

Este método controla los nodos de elemento y atributo de la siguiente manera:This method handles element and attribute nodes in the following manner:

Tipo de nodoNode type Posición antes de la llamadaPosition before the call Fragmento XMLXML fragment Valor devueltoReturn value Posición después de la llamadaPosition After the Call
Element En la etiqueta de inicio item1.On the item1 start tag. <item1>text1</item1><item2>text2</item2><item1>text1</item1><item2>text2</item2> <item1>text1</item1><item1>text1</item1> En la etiqueta de inicio item2.On the item2 start tag.
Attribute En el nodo de atributos attr1.On the attr1 attribute node. <item attr1="val1" attr2="val2">text</item><item attr1="val1" attr2="val2">text</item> attr1="val1"attr1="val1" Permanece en el nodo de atributos attr1.Remains on the attr1 attribute node.

Si el sistema de lectura se encuentra situado en un nodo hoja, una llamada a ReadOuterXml es equivalente a una llamada a Read.If the reader is positioned on a leaf node, calling ReadOuterXml is equivalent to calling Read. El método devuelve String.Empty (excepto para los nodos de atributo, en cuyo caso se devuelve el marcado de atributo).The method returns String.Empty (except for attribute nodes, in which case the attribute markup is returned).

Este método comprueba el XML con formato correcto.This method checks for well-formed XML. Si ReadOuterXml se llama a desde XmlValidatingReaderun, este método también valida el contenido devueltoIf ReadOuterXml is called from an XmlValidatingReader, this method also validates the content returned

Tal y como se XmlNodeReaderimplementa XmlTextReader en las clases ReadOuterXml , y XmlValidatingReader el método tiene en cuenta el espacio de nombres.As implemented in the XmlNodeReader, XmlTextReader and XmlValidatingReader classes the ReadOuterXml method is namespace aware. <A xmlns:S="urn:1"><S:B>hello</S:B></A>Dado el siguiente texto XML, si el lector estaba situado en la S:B etiqueta de apertura, <S:B xmlns:S="urn:1">hello<S:B/> ReadOuterXml devuelve.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/>.

Para obtener la versión asincrónica de este método, vea ReadOuterXmlAsync.For the asynchronous version of this method, see ReadOuterXmlAsync.

Se aplica a