Condividi tramite


XmlValidatingReader.ReadString Metodo

Definizione

Legge il contenuto di un nodo elemento o testo come stringa.

public:
 override System::String ^ ReadString();
public override string ReadString ();
override this.ReadString : unit -> string
Public Overrides Function ReadString () As String

Restituisce

Contenuto del nodo elemento o testo. Può essere una stringa vuota se il lettore non è posizionato su un nodo elemento o testo oppure se non ci sono più contenuti di testo da restituire nel contesto corrente.

Esempio

Nell'esempio seguente viene visualizzato il contenuto di testo di ognuno degli elementi.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   XmlTextReader^ txtreader = nullptr;
   XmlValidatingReader^ reader = nullptr;
   try
   {
      
      //Implement the readers.
      txtreader = gcnew XmlTextReader( "elems.xml" );
      reader = gcnew XmlValidatingReader( txtreader );
      
      //Parse the XML and display the text content of each of the elements.
      while ( reader->Read() )
      {
         if ( reader->IsStartElement() )
         {
            if ( reader->IsEmptyElement )
                        Console::WriteLine( "<{0}/>", reader->Name );
            else
            {
               Console::Write( "<{0}> ", reader->Name );
               reader->Read(); //Read the start tag.
               if ( reader->IsStartElement() )
                              
               //Handle nested elements.
               Console::Write( "\r\n<{0}>", reader->Name );
               Console::WriteLine( reader->ReadString() ); //Read the text content of the element.
            }
         }
      }
   }
   finally
   {
      if ( reader != nullptr )
            reader->Close();
   }

}

using System;
using System.IO;
using System.Xml;

public class Sample
{
  public static void Main()
  {
    XmlTextReader txtreader = null;
    XmlValidatingReader reader = null;

    try
    {
       //Implement the readers.
       txtreader = new XmlTextReader("elems.xml");
       reader = new XmlValidatingReader(txtreader);

       //Parse the XML and display the text content of each of the elements.
       while (reader.Read()){
         if (reader.IsStartElement()){
           if (reader.IsEmptyElement)
                    {
                        Console.WriteLine("<{0}/>", reader.Name);
                    }
                    else
                    {
               Console.Write("<{0}> ", reader.Name);
               reader.Read(); //Read the start tag.
               if (reader.IsStartElement())  //Handle nested elements.
                   Console.Write("\r\n<{0}>", reader.Name);
               Console.WriteLine(reader.ReadString());  //Read the text content of the element.
           }
         }
       }
     }

     finally
     {
        if (reader != null)
          reader.Close();
      }
  }
} // End class
Imports System.IO
Imports System.Xml

Public Class Sample
   
   Public Shared Sub Main()
      Dim txtreader As XmlTextReader = Nothing
      Dim reader As XmlValidatingReader = Nothing
      
      Try
         'Implement the readers.
         txtreader = New XmlTextReader("elems.xml")
         reader = New XmlValidatingReader(txtreader)
         
         'Parse the XML and display the text content of each of the elements.
         While reader.Read()
            If reader.IsStartElement() Then
               If reader.IsEmptyElement Then
                  Console.WriteLine("<{0}/>", reader.Name)
               Else
                  Console.Write("<{0}> ", reader.Name)
                  reader.Read() 'Read the start tag.
                  If (reader.IsStartElement())  'Handle nested elements.
                    Console.WriteLine()
                    Console.Write("<{0}>", reader.Name)
                  End If
                  Console.WriteLine(reader.ReadString()) 'Read the text content of the element.
               End If
            End If
         End While      
      
      Finally
         If Not (reader Is Nothing) Then
            reader.Close()
         End If
      End Try
   End Sub
End Class

Nell'esempio viene usato il file , elems.xml, come input.

<book>
  <title>Pride And Prejudice</title>
  <price>19.95</price>
  <misc/>
</book>

Commenti

Il nodo di testo può essere anche rappresentato da un nodo elemento o da un nodo testo di un attributo.

Nota

La XmlValidatingReader classe è obsoleta in .NET Framework 2.0. È possibile creare un'istanza di XmlReader convalida usando la XmlReaderSettings classe e il Create metodo . Per altre informazioni, vedere la sezione Note della pagina di riferimento XmlReader.

Se posizionato su un elemento, ReadString concatena tutti i tipi di testo, spazi vuoti significativi, spazi vuoti e nodi di sezione CDATA e restituisce i dati concatenati come contenuto dell'elemento. Il lettore si arresta quando viene rilevato un markup, inclusi i commenti e le istruzioni di elaborazione. Questa situazione può verificarsi in un modello a contenuto misto oppure durante la lettura di un tag di fine elemento.

Se posizionato in un nodo di testo, ReadString esegue la stessa concatenazione dal nodo di testo al tag finale dell'elemento. Se il lettore è posizionato in corrispondenza di un nodo di tipo text di un attributo, il metodo ReadString funzionerà come quando il lettore è posizionato in corrispondenza del tag di inizio dell'elemento, restituendo tutti i nodi di tipo text dell'elemento concatenati.

La EntityHandling proprietà determina il funzionamento ReadString come segue:

Valore Descrizione
ExpandEntities Restituisce caratteri espansi ed entità generali. Questo è il valore predefinito.
ExpandCharEntities Restituisce il contenuto di testo fino a , ma non include un riferimento all'entità generale. Ciò significa che un'entità generale causa l'arresto di ReadString. È necessario chiamare Read per eseguire il passaggio del riferimento all'entità.

Si applica a

Vedi anche