Поделиться через


XmlValidatingReader.ReadString Метод

Определение

Считывает содержимое элемента или текстового узла в виде строки.

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

Возвращаемое значение

Содержимое элемента или текстового узла. Если средство чтения позиционировано не на элемент или текстовый узел, а также если отсутствует возвращаемый текст, это может быть пустая строка.

Примеры

В следующем примере отображается текстовое содержимое каждого из элементов.

#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

В этом примере в качестве входных данных используется файл elems.xml.

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

Комментарии

Текстовым узлом может быть элемент или текстовой узел атрибута.

Примечание

Класс XmlValidatingReader устарел в платформа .NET Framework 2.0. Проверяющий XmlReader экземпляр можно создать с помощью XmlReaderSettings класса и Create метода . Дополнительные сведения см. в подразделе "Примечания" на справочной странице XmlReader.

При расположении в элементе ReadString объединяет весь текст, значительные пробелы, пробелы и типы узлов раздела CDATA и возвращает объединенные данные в качестве содержимого элемента. Средство чтения останавливается при обнаружении любой разметки, включая комментарии и инструкции по обработке. Это может случиться в модели смешанного содержимого или во время считывания закрывающего тега элемента.

При расположении на текстовом узле ReadString выполняет то же объединение из текстового узла с конечным тегом элемента. Если модуль чтения расположен в текстовом узле атрибута, метод ReadString работает так же, как в случае, когда модуль чтения располагается в открывающем теге элемента, и возвращает все объединенные текстовые узлы элемента.

Свойство EntityHandling определяет, как ReadString работает:

Значение Описание
ExpandEntities Возвращает развернутые символьные и общие сущности. Это значение по умолчанию.
ExpandCharEntities Возвращает текстовое содержимое вплоть до , но не включает общую ссылку на сущность. Это означает, что общая сущность приводит к остановке ReadString. Необходимо вызвать метод Read , чтобы выполнить шаг с обходом ссылки на сущность.

Применяется к

См. также раздел