XmlReader.Read XmlReader.Read XmlReader.Read XmlReader.Read Method

Definizione

Quando ne viene eseguito l'override in una classe derivata, visualizza il nodo successivo nel flusso.When overridden in a derived class, reads the next node from the stream.

public:
 abstract bool Read();
public abstract bool Read ();
abstract member Read : unit -> bool
Public MustOverride Function Read () As Boolean

Restituisce

true se il nodo successivo è stato letto correttamente; in caso contrario, false.true if the next node was read successfully; otherwise, false.

Eccezioni

Errore durante l'analisi del codice XML.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 legge un file XML e vengono visualizzati tutti i nodi:The following example reads an XML file and displays each of the nodes:

XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
XmlReader reader = XmlReader.Create("items.xml", settings);
  
reader.MoveToContent();
  // Parse the file and display each of the nodes.
  while (reader.Read()) {
    switch (reader.NodeType) {
      case XmlNodeType.Element:
          Console.Write("<{0}>", reader.Name);
          break;
      case XmlNodeType.Text:
          Console.Write(reader.Value);
          break;
       case XmlNodeType.CDATA:
           Console.Write("<![CDATA[{0}]]>", reader.Value);
           break;
       case XmlNodeType.ProcessingInstruction:
           Console.Write("<?{0} {1}?>", reader.Name, reader.Value);
           break;
       case XmlNodeType.Comment:
           Console.Write("<!--{0}-->", reader.Value);
           break;
       case XmlNodeType.XmlDeclaration:
           Console.Write("<?xml version='1.0'?>");
           break;
       case XmlNodeType.Document:
           break;
       case XmlNodeType.DocumentType:
           Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
           break;
       case XmlNodeType.EntityReference:
           Console.Write(reader.Name);
           break;
       case XmlNodeType.EndElement:
           Console.Write("</{0}>", reader.Name);
           break;
   } 
}
Dim settings As New XmlReaderSettings()
settings.DtdProcessing = DtdProcessing.Parse
Dim reader As XmlReader = XmlReader.Create("items.xml", settings)
reader.MoveToContent()
' Parse the file and display each of the nodes.
While reader.Read()
  Select Case reader.NodeType
    Case XmlNodeType.Element
      Console.Write("<{0}>", reader.Name)
    Case XmlNodeType.Text
      Console.Write(reader.Value)
    Case XmlNodeType.CDATA
      Console.Write("<![CDATA[{0}]]>", reader.Value)
    Case XmlNodeType.ProcessingInstruction
      Console.Write("<?{0} {1}?>", reader.Name, reader.Value)
    Case XmlNodeType.Comment
      Console.Write("<!--{0}-->", reader.Value)
    Case XmlNodeType.XmlDeclaration
      Console.Write("<?xml version='1.0'?>")
    Case XmlNodeType.Document
    Case XmlNodeType.DocumentType
      Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value)
    Case XmlNodeType.EntityReference
      Console.Write(reader.Name)
    Case XmlNodeType.EndElement
      Console.Write("</{0}>", reader.Name)
  End Select
End While

L'esempio Usa il items.xml file.The sample uses the items.xml file.

<?xml version="1.0"?>
<!-- This is a sample XML document -->
<!DOCTYPE Items [<!ENTITY number "123">]>
<Items>
  <Item>Test with an entity: &number;</Item>
  <Item>Test with a child element <more/> stuff</Item>
  <Item>Test with a CDATA section <![CDATA[<456>]]> def</Item>
  <Item>Test with a char entity: &#65;</Item>
  <!-- Fourteen chars in this element.-->
  <Item>1234567890ABCD</Item>
</Items>

Output:Output:

<Item>Test with an entity: 123</Item><Item>Test with a child element <more> stuff</Item><Item>Test with a CDATA section <![CDATA[<456>]]> def</Item><Item>Test with a char entity: A</Item><!-- Fourteen chars in this element.--><Item>1234567890ABCD</Item></Items>

Commenti

Quando un XmlReader viene prima creato e inizializzato, non è disponibile alcuna informazione.When an XmlReader is first created and initialized, there is no information available. È necessario chiamare Read per leggere il primo nodo.You must call Read to read the first node. Il Read metodo imposta lo stato del lettore XML per avviare ReadState e per scorrere il file XML in modo sequenziale fino a quando non raggiunge la fine del file, a quel punto il metodo restituisce un valore di false.The Read method sets the state of the XML reader to initiate ReadState and moves through the XML file sequentially until it reaches the end of the file, at which point the method returns a value of false.

Questo metodo richiede almeno quattro byte dal flusso di dati per iniziare l'analisi.This method requires at least four bytes from the data stream in order to begin parsing. Se vengono restituiti meno di quattro byte e non sono presenti più dati nel flusso, il metodo restituisce false.If fewer than four bytes are returned and there is no more data in the stream, the method returns false. Se sono presenti più dati nel flusso, il metodo bloccherà l'analisi fino alla ricezione del quarto byte.If there is more data in the stream, the method will block parsing until receipt of the fourth byte.

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

Si applica a