Condividi tramite


XmlReader.ReadInnerXml Metodo

Definizione

Quando sottoposto a override in una classe derivata, legge tutto il contenuto come stringa, incluso il markup.

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

Restituisce

Tutto il contenuto XML del nodo corrente, incluso il markup. Se il nodo corrente non ha elementi figlio, viene restituita una stringa vuota.

Se il nodo corrente non è né un elemento né un attributo, verrà restituita una stringa vuota.

Eccezioni

L'XML non è in formato corretto oppure si è verificato un errore durante l'analisi dell'XML.

È stato chiamato un metodo della classe XmlReader prima del completamento di un'operazione asincrona precedente. In questo caso, viene generata l'eccezione InvalidOperationException con il messaggio "È già in corso un'operazione asincrona".

Esempio

Nell'esempio seguente vengono confrontati i ReadInnerXml metodi e ReadOuterXml .

// 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

Nell'esempio viene 2books.xml usato il file come 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 restituisce tutto il contenuto del nodo corrente, incluso il markup. Il nodo corrente, ovvero il tag di inizio, e il corrispondente nodo o tag di fine non vengono restituiti. Ad esempio, se si dispone di quanto segue:

<node>
 this <child id="123"/>
</node>

ReadInnerXml restituisce this <child id="123"/>

Questo metodo gestisce i nodi di elemento e attributo nel modo seguente:

Tipo di nodo Posizione prima della chiamata Frammento XML Valore restituito Posizione dopo la chiamata
Element In corrispondenza del tag di inizio item1. <item1>text1</item1><item2 text2<>/item2> text1 In corrispondenza del tag di inizio item2.
Attribute In corrispondenza del nodo Attribute attr1. <item attr1="val1" attr2="val2">text</item> val1 Rimane in corrispondenza del nodo Attribute attr1.

Se il lettore è posizionato in corrispondenza di un nodo foglia, la chiamata al metodo ReadInnerXml equivarrà alla chiamata al metodo Read. Il metodo restituisce String.Empty (ad eccezione dei nodi dell'attributo, nel qual caso viene restituito il valore dell'attributo).

Questo metodo verifica la presenza di XML ben formato. Se ReadInnerXml viene chiamato da , XmlValidatingReaderquesto metodo convalida anche il contenuto restituito.

Come implementato nelle XmlNodeReaderXmlTextReader classi , e XmlValidatingReader il ReadOuterXml metodo è compatibile con lo spazio dei nomi.

Per la versione asincrona di questo metodo, vedere ReadInnerXmlAsync.

Si applica a