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

Definizione

Quando sottoposto a override in una classe derivata, legge il contenuto che rappresenta questo nodo ed i relativi elementi figlio, incluso il markup.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

Restituisce

Se il lettore è posizionato in corrispondenza di un nodo di elemento o di attributo, questo metodo restituirà tutto il contenuto XML del nodo corrente e dei relativi elementi figlio, incluso il markup; in caso contrario, restituirà una stringa vuota.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.

Eccezioni

L'XML non è in formato corretto oppure si è verificato un errore durante l'analisi dell'XML.The XML was not well-formed, or an error occurred while parsing the XML.

È stato chiamato un metodo della classe XmlReader prima del completamento di un'operazione asincrona precedente.An XmlReader method was called before a previous asynchronous operation finished. In questo caso, viene generata l'eccezione InvalidOperationException con il messaggio "È già in corso un'operazione asincrona".In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Esempi

Nell'esempio seguente vengono confrontate le ReadInnerXml e ReadOuterXml metodi.The 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

L'esempio Usa 2books.xml file come input.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>

Commenti

Questo metodo è simile a ReadInnerXml ad eccezione del fatto che restituisce anche i tag di inizio e fine.This method is similar to ReadInnerXml except it also returns the start and end tags.

Questo metodo gestisce i nodi di elementi e attributi nel modo seguente:This method handles element and attribute nodes in the following manner:

Tipo di nodoNode type Posizione prima della chiamataPosition before the call Frammento XMLXML fragment Valore restituitoReturn value Posizione dopo la chiamataPosition After the Call
Element In corrispondenza del tag di inizio item1.On the item1 start tag. <item1>text1</item1><item2>text2</item2><item1>text1</item1><item2>text2</item2> <item1>text1</item1><item1>text1</item1> In corrispondenza del tag di inizio item2.On the item2 start tag.
Attribute In corrispondenza del nodo Attribute attr1.On the attr1 attribute node. <item attr1="val1" attr2="val2">text</item><item attr1="val1" attr2="val2">text</item> attr1="val1"attr1="val1" Rimane in corrispondenza del nodo Attribute attr1.Remains on the attr1 attribute node.

Se il lettore è posizionato in corrispondenza di un nodo foglia, la chiamata al metodo ReadOuterXml equivarrà alla chiamata al metodo Read.If the reader is positioned on a leaf node, calling ReadOuterXml is equivalent to calling Read. Il metodo restituisce String.Empty (tranne che per i nodi attributo, nel qual caso viene restituito il codice di attributo).The method returns String.Empty (except for attribute nodes, in which case the attribute markup is returned).

Questo metodo controlla XML ben formato.This method checks for well-formed XML. Se ReadOuterXml viene chiamato da un XmlValidatingReader, questo metodo convalida inoltre il contenuto restituitoIf ReadOuterXml is called from an XmlValidatingReader, this method also validates the content returned

Come è implementato nel XmlNodeReader, XmlTextReader e XmlValidatingReader classi il ReadOuterXml metodo è compatibile con lo spazio dei nomi.As implemented in the XmlNodeReader, XmlTextReader and XmlValidatingReader classes the ReadOuterXml method is namespace aware. Dato il testo XML seguente <A xmlns:S="urn:1"><S:B>hello</S:B></A>, se il lettore fosse posizionato sul S:B tag di apertura ReadOuterXml restituisce <S:B xmlns:S="urn:1">hello<S:B/>.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/>.

Per la versione asincrona di questo metodo, vedere ReadOuterXmlAsync.For the asynchronous version of this method, see ReadOuterXmlAsync.

Si applica a