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 , чтобы выполнить шаг с обходом ссылки на сущность. |