XmlReader Класс

Определение

Предоставляет средство чтения, обеспечивающее быстрый прямой доступ (без кэширования) к данным XML.Represents a reader that provides fast, noncached, forward-only access to XML data.

public ref class XmlReader abstract : IDisposable
public abstract class XmlReader : IDisposable
type XmlReader = class
    interface IDisposable
Public MustInherit Class XmlReader
Implements IDisposable
Наследование
XmlReader
Производный
Реализации

Примеры

В следующем примере кода показано, как использовать асинхронный API для анализа XML.The following example code shows how to use the asynchronous API to parse XML.

async Task TestReader(System.IO.Stream stream)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Async = true;

    using (XmlReader reader = XmlReader.Create(stream, settings))
    {
        while (await reader.ReadAsync())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.WriteLine("Start Element {0}", reader.Name);
                    break;
                case XmlNodeType.Text:
                    Console.WriteLine("Text Node: {0}",
                             await reader.GetValueAsync());
                    break;
                case XmlNodeType.EndElement:
                    Console.WriteLine("End Element {0}", reader.Name);
                    break;
                default:
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value);
                    break;
            }
        }
    }
}
Public Async Function TestReader(stream As System.IO.Stream) As Task
    Dim settings As New XmlReaderSettings()
    settings.Async = True

    Using reader As XmlReader = XmlReader.Create(stream, settings)
        While (Await reader.ReadAsync())
            Select Case (reader.NodeType)
                Case XmlNodeType.Element
                    Console.WriteLine("Start Element {0}", reader.Name)
                Case XmlNodeType.Text
                    Console.WriteLine("Text Node: {0}",
                             Await reader.GetValueAsync())
                Case XmlNodeType.EndElement
                    Console.WriteLine("End Element {0}", reader.Name)
                Case Else
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value)
            End Select
        End While
    End Using
End Function

Комментарии

XmlReader предоставляет доступ к XML-данным в документе или потоке только для чтения вперед.XmlReader provides forward-only, read-only access to XML data in a document or stream. Этот класс соответствует стандартам W3C язык XML (XML) 1,0 (Четвертый выпуск) и пространствам имен в рекомендациях по XML 1,0 (третий выпуск) .This class conforms to the W3C Extensible Markup Language (XML) 1.0 (fourth edition) and the Namespaces in XML 1.0 (third edition) recommendations.

XmlReader методы позволяют перемещаться по XML-данным и читать содержимое узла.XmlReader methods let you move through XML data and read the contents of a node. Свойства класса отражать значение текущего узла, где расположен модуль чтения. Значение свойства ReadState указывает текущее состояние модуля чтения XML.The properties of the class reflect the value of the current node, which is where the reader is positioned.The ReadState property value indicates the current state of the XML reader. Например, свойство устанавливается в ReadState.Initial методом XmlReader.Read и ReadState.Closedся методом XmlReader.Close.For example, the property is set to ReadState.Initial by the XmlReader.Read method and ReadState.Closed by the XmlReader.Close method. XmlReader также обеспечивает проверку согласованности данных и проверку DTD или схемы.XmlReader also provides data conformance checks and validation against a DTD or schema.

XmlReader использует модель извлечения для получения данных.XmlReader uses a pull model to retrieve data. Эта модель:This model:

  • Упрощает управление состоянием с помощью естественного уточнения процедур сверху вниз.Simplifies state management by a natural, top-down procedural refinement.

  • Поддерживает несколько входных потоков и уровней.Supports multiple input streams and layering.

  • Позволяет клиенту предоставить средству синтаксического анализа буфер, в который непосредственно записывается строка, и таким образом избежать необходимости в дополнительной копии строки.Enables the client to give the parser a buffer into which the string is directly written, and thus avoids the necessity of an extra string copy.

  • Поддерживает выборочную обработку.Supports selective processing. Клиент может пропускать элементы и обрабатывать те, которые представляют интерес для приложения.The client can skip items and process those that are of interest to the application. Вы также можете заранее задать свойства, чтобы управлять обработкой XML-потока (например, нормализацией).You can also set properties in advance to manage how the XML stream is processed (for example, normalization).

СодержаниеIn this section:

Создание модуля чтения XMLCreating an XML reader
Проверка данных XMLValidating XML data
Соответствие данных Data conformance
Навигация по узлам Navigating through nodes
Чтение XML-элементов Reading XML elements
Чтение АТРИБУТОВ XML Reading XML attributes
Чтение XML-содержимого Reading XML content
Преобразование в типы CLR Converting to CLR types
Асинхронное программирование Asynchronous programming
Вопросы безопасностиSecurity considerations

Создание средства чтения XMLCreating an XML reader

Для создания экземпляра XmlReader используйте метод Create.Use the Create method to create an XmlReader instance.

Хотя .NET Framework предоставляет конкретные реализации класса XmlReader, такие как XmlTextReader, XmlNodeReaderи классы XmlValidatingReader, рекомендуется использовать специализированные классы только в следующих сценариях:Although the .NET Framework provides concrete implementations of the XmlReader class, such as the XmlTextReader, XmlNodeReader, and the XmlValidatingReader classes, we recommend that you use the specialized classes only in these scenarios:

  • Если необходимо считать поддерево XML DOM из объекта XmlNode, используйте класс XmlNodeReader.When you want to read an XML DOM subtree from an XmlNode object, use the XmlNodeReader class. (Однако этот класс не поддерживает проверку DTD или схемы.)(However, this class doesn't support DTD or schema validation.)

  • Если необходимо развернуть сущности по запросу, вы не хотите нормализовать содержимое текста или не хотите, чтобы атрибуты по умолчанию возвращались, используйте класс XmlTextReader.If you must expand entities on request, you don't want your text content normalized, or you don't want default attributes returned, use the XmlTextReader class.

Чтобы указать набор компонентов, которые необходимо включить в модуле чтения XML, передайте объект System.Xml.XmlReaderSettings в метод Create.To specify the set of features you want to enable on the XML reader, pass an System.Xml.XmlReaderSettings object to the Create method. Вы можете использовать один объект System.Xml.XmlReaderSettings, чтобы создать несколько модулей чтения с одинаковыми функциональными возможностями или изменить объект System.Xml.XmlReaderSettings, чтобы создать новое средство чтения с другим набором компонентов.You can use a single System.Xml.XmlReaderSettings object to create multiple readers with the same functionality, or modify the System.Xml.XmlReaderSettings object to create a new reader with a different set of features. Можно также легко добавить компоненты в существующий модуль чтения.You can also easily add features to an existing reader.

Если объект System.Xml.XmlReaderSettings не используется, используются параметры по умолчанию.If you don't use a System.Xml.XmlReaderSettings object, default settings are used. Дополнительные сведения см. на странице справочника по Create.See the Create reference page for details.

XmlReader создает XmlException при ошибках синтаксического анализа XML.XmlReader throws an XmlException on XML parse errors. После возникновения исключения состояние модуля чтения не может быть предсказуемым.After an exception is thrown, the state of the reader is not predictable. Например, тип сообщаемого узла может отличаться от фактического типа узла текущего узла.For example, the reported node type may be different from the actual node type of the current node. Используйте свойство ReadState, чтобы проверить, находится ли модуль чтения в состоянии ошибки.Use the ReadState property to check whether the reader is in error state.

Проверка XML-данныхValidating XML data

Для определения структуры XML-документа и его связей, типов данных и ограничений содержимого используется определение типа документа (DTD) или схема языка определения схемы XML (XSD).To define the structure of an XML document and its element relationships, data types, and content constraints, you use a document type definition (DTD) or XML Schema definition language (XSD) schema. XML-документ считается правильным форматом, если он соответствует всем синтаксическим требованиям, определенным в рекомендациях консорциума W3C по XML 1,0.An XML document is considered to be well formed if it meets all the syntactical requirements defined by the W3C XML 1.0 Recommendation. Он считается допустимым, если он правильно сформирован, а также соответствует ограничениям, определенным в DTD или схеме.It's considered valid if it's well formed and also conforms to the constraints defined by its DTD or schema. (См. раздел Схема W3C XML, часть 1: структуры и Схема W3C XML, часть 2: рекомендации по типам.) Таким образом, несмотря на то, что все допустимые XML-документы имеют правильный формат, не все XML-документы правильного формата являются допустимыми.(See the W3C XML Schema Part 1: Structures and the W3C XML Schema Part 2: Datatypes recommendations.) Therefore, although all valid XML documents are well formed, not all well-formed XML documents are valid.

Можно проверить данные по DTD, встроенной XSD-схеме или схеме XSD, хранящейся в объекте XmlSchemaSet (кэше). Эти сценарии описаны на странице справки Create.You can validate the data against a DTD, an inline XSD Schema, or an XSD Schema stored in an XmlSchemaSet object (a cache); these scenarios are described on the Create reference page. XmlReader не поддерживает проверку схемы XML-Data Reduceed (XDR).XmlReader doesn't support XML-Data Reduced (XDR) schema validation.

Чтобы указать тип проверки, поддерживаемый экземпляром XmlReader, используйте следующие параметры класса XmlReaderSettings.You use the following settings on the XmlReaderSettings class to specify what type of validation, if any, the XmlReader instance supports.

Использовать этот XmlReaderSettings элементUse this XmlReaderSettings member Чтобы указатьTo specify
СвойствоDtdProcessingDtdProcessing property Следует ли разрешить обработку DTD.Whether to allow DTD processing. По умолчанию обработка определения DTD не разрешается.The default is to disallow DTD processing.
СвойствоValidationTypeValidationType property Должен ли модуль чтения проверять данные, а также тип выполняемой проверки (DTD или Schema).Whether the reader should validate data, and what type of validation to perform (DTD or schema). По умолчанию проверка данных не выполняется.The default is no data validation.
СобытиеValidationEventHandlerValidationEventHandler event Обработчик событий для получения сведений о событиях проверки.An event handler for receiving information about validation events. Если обработчик события не предоставлен, при первой ошибке проверки вызывается исключение XmlException.If an event handler is not provided, an XmlException is thrown on the first validation error.
СвойствоValidationFlagsValidationFlags property Дополнительные параметры проверки с помощью членов перечисления XmlSchemaValidationFlags:Additional validation options through the XmlSchemaValidationFlags enumeration members:

- AllowXmlAttributes--разрешить XML-атрибуты (xml:*) в документах экземпляров, даже если они не определены в схеме.- AllowXmlAttributes-- Allow XML attributes (xml:*) in instance documents even when they're not defined in the schema. Атрибуты проверяются на основе их типов данных.The attributes are validated based on their data type. Сведения о параметрах, используемых в конкретных сценариях, см. на странице справочника по XmlSchemaValidationFlags.See the XmlSchemaValidationFlags reference page for the setting to use in specific scenarios. (По умолчанию отключено.)(Disabled by default.)
- ProcessIdentityConstraints--Обработка ограничений идентификации (xs:ID, xs:IDREF, xs:key, xs:keyref, xs:unique), обнаруженных во время проверки.- ProcessIdentityConstraints --Process identity constraints (xs:ID, xs:IDREF, xs:key, xs:keyref, xs:unique) encountered during validation. (Включено по умолчанию.)(Enabled by default.)
- ProcessSchemaLocation--обрабатывать схемы, заданные атрибутом xsi:schemaLocation или xsi:noNamespaceSchemaLocation.- ProcessSchemaLocation --Process schemas specified by the xsi:schemaLocation or xsi:noNamespaceSchemaLocation attribute. (Включено по умолчанию.)(Enabled by default.)
- ProcessInlineSchema--обрабатывать встроенные XML-схемы во время проверки.- ProcessInlineSchema-- Process inline XML Schemas during validation. (По умолчанию отключено.)(Disabled by default.)
- ReportValidationWarnings— сообщать о событиях, если происходит предупреждение проверки.- ReportValidationWarnings--Report events if a validation warning occurs. Предупреждение обычно формируется при отсутствии определения DTD или схемы XML для проверки конкретного элемента или атрибута.A warning is typically issued when there is no DTD or XML Schema to validate a particular element or attribute against. Параметр ValidationEventHandler используется для уведомления.The ValidationEventHandler is used for notification. (По умолчанию отключено.)(Disabled by default.)
Schemas XmlSchemaSet, используемый при проверке данных.The XmlSchemaSet to use for validation.
СвойствоXmlResolverXmlResolver property XmlResolver для разрешения и доступа к внешним ресурсам.The XmlResolver for resolving and accessing external resources. Это могут быть внешние сущности, такие как DTD и схемы, а также любые xs:include или xs:import элементы, содержащиеся в схеме XML.This can include external entities such as DTD and schemas, and any xs:include or xs:import elements contained in the XML Schema. Если не указать XmlResolver, XmlReader использует XmlUrlResolver по умолчанию без учетных данных пользователя.If you don't specify an XmlResolver, the XmlReader uses a default XmlUrlResolver with no user credentials.

Соответствие данныхData conformance

Средства чтения XML, созданным Create метод следующие предварительные требования соответствия по умолчанию:XML readers that are created by the Create method meet the following compliance requirements by default:

  • Новые строки и значения атрибутов нормализованы согласно рекомендациям консорциума W3C по XML 1,0.New lines and attribute value are normalized according to the W3C XML 1.0 Recommendation.

  • Все сущности разворачиваются автоматически.All entities are automatically expanded.

  • Атрибуты по умолчанию, объявленные в определении типа документа, всегда добавляются, даже если средство чтения не проверяется.Default attributes declared in the document type definition are always added even when the reader doesn't validate.

  • Допускается объявление префикса XML, сопоставленного с правильным URI пространства имен XML.Declaration of XML prefix mapped to the correct XML namespace URI is allowed.

  • Имена нотаций в одном NotationType объявление атрибута и NmTokens в одном Enumeration объявление атрибута отличаются.The notation names in a single NotationType attribute declaration and NmTokens in a single Enumeration attribute declaration are distinct.

Используйте следующие свойства XmlReaderSettings, чтобы указать тип проверки соответствия, которую необходимо включить.Use these XmlReaderSettings properties to specify the type of conformance checks you want to enable:

Используйте это XmlReaderSettings свойствоUse this XmlReaderSettings property КомуTo Значение по умолчаниюDefault
СвойствоCheckCharactersCheckCharacters property Включить или отключить проверки для следующих:Enable or disable checks for the following:

-Символы находятся в диапазоне допустимых символов XML, как определено в разделе 2,2 символов статьи рекомендации консорциума W3C XML 1,0.- Characters are within the range of legal XML characters, as defined by the 2.2 Characters section of the W3C XML 1.0 Recommendation.
— Все имена XML являются допустимыми, как определено в разделе Общие синтаксические конструкции 2,3 рекомендации консорциума W3C XML 1,0.- All XML names are valid, as defined by the 2.3 Common Syntactic Constructs section of the W3C XML 1.0 Recommendation.

Если это свойство имеет значение true (по умолчанию), исключение XmlException возникает, если XML-файл содержит недопустимые символы или недопустимые имена XML (например, имя элемента начинается с цифры).When this property is set to true (default), an XmlException exception is thrown if the XML file contains illegal characters or invalid XML names (for example, an element name starts with a number).
Проверка символов и имен включена.Character and name checking is enabled.

Задание свойству CheckCharacters значения false отключает проверку символов для ссылок на сущности символов.Setting CheckCharacters to false turns off character checking for character entity references. Если модуль чтения обрабатывает текстовые данные, он всегда проверяет допустимость имен XML независимо от этого параметра.If the reader is processing text data, it always checks that XML names are valid, regardless of this setting. Примечание. Рекомендации по XML 1,0 требуют соответствия уровня документа при наличии DTD.Note: The XML 1.0 recommendation requires document-level conformance when a DTD is present. Таким образом, если средство чтения настроено для поддержки ConformanceLevel.Fragment, но XML-данные содержат определение типа документа (DTD), выдается XmlException.Therefore, if the reader is configured to support ConformanceLevel.Fragment, but the XML data contains a document type definition (DTD), an XmlException is thrown.
СвойствоConformanceLevelConformanceLevel property Выберите уровень соответствия для принудительного применения:Choose the level of conformance to enforce:

- Document.- Document. Соответствует правилам для XML-документа с правильным форматом 1,0.Conforms to the rules for a well-formed XML 1.0 document.
- Fragment.- Fragment. Соответствует правилам для фрагмента документа правильного формата, который можно использовать как внешнюю анализируемую сущность.Conforms to the rules for a well-formed document fragment that can be consumed as an external parsed entity.
- Auto.- Auto. Соответствует уровню, принятому модулем чтения.Conforms to the level decided by the reader.

Если данные не согласованы, возникает исключение XmlException.If the data isn't in conformance, an XmlException exception is thrown.
Document

Текущий узел — это XML-узел, на котором в настоящий момент размещается модуль чтения XML.The current node is the XML node on which the XML reader is currently positioned. Все методы XmlReader выполняют операции в связи с этим узлом, а все свойства XmlReader соответствуют значению текущего узла.All XmlReader methods perform operations in relation to this node, and all XmlReader properties reflect the value of the current node.

Следующие методы упрощают навигацию по узлам и анализу данных.The following methods make it easy to navigate through nodes and parse data.

Используйте этот метод XmlReaderSettingsUse this XmlReaderSettings method КомуTo
Read Прочтите первый узел и прокрутите поток по одному узлу за раз.Read the first node, and advance through the stream one node at a time. Такие вызовы обычно выполняются в цикле while.Such calls are typically performed inside a while loop.

Используйте свойство NodeType, чтобы получить тип (например, атрибут, комментарий, элемент и т. д.) текущего узла.Use the NodeType property to get the type (for example, attribute, comment, element, and so on) of the current node.
Skip Пропустите дочерние элементы текущего узла и перейдите к следующему узлу.Skip the children of the current node and move to the next node.
MoveToContent и MoveToContentAsyncMoveToContent and MoveToContentAsync Пропускать узлы, не являющиеся узлами содержимого, и переходить к следующему узлу содержимого или к концу файла.Skip non-content nodes and move to the next content node or to the end of the file.

Узлы без содержимого включают ProcessingInstruction, DocumentType, Comment, Whitespaceи SignificantWhitespace.Non-content nodes include ProcessingInstruction, DocumentType, Comment, Whitespace, and SignificantWhitespace.

Узлы содержимого содержат текст, не являющийся пробелом, CDATA, EntityReference и EndEntity.Content nodes include non-white space text, CDATA, EntityReference , and EndEntity.
ReadSubtree Считывает элемент и все его дочерние элементы и возвращает новый экземпляр XmlReader, для которого задано значение ReadState.Initial.Read an element and all its children, and return a new XmlReader instance set to ReadState.Initial.

Этот метод полезен для создания границ вокруг XML-элементов. Например, если требуется передать данные в другой компонент для обработки и требуется ограничить объем данных, доступ к которым может получить компонент.This method is useful for creating boundaries around XML elements; for example, if you want to pass data to another component for processing and you want to limit how much of your data the component can access.

Пример перемещения по текстовому потоку по одному узлу за раз и отображения типа каждого узла см. на странице справки XmlReader.Read.See the XmlReader.Read reference page for an example of navigating through a text stream one node at a time and displaying the type of each node.

В следующих разделах описывается, как можно читать определенные типы данных, такие как элементы, атрибуты и типизированные данные.The following sections describe how you can read specific types of data, such as elements, attributes, and typed data.

Чтение XML-элементовReading XML elements

В следующей таблице перечислены методы и свойства, предоставляемые классом XmlReader для обработки элементов.The following table lists the methods and properties that the XmlReader class provides for processing elements. После того, как объект XmlReader позиционируется на элементе, свойства узла, например Name, отражают значения этого элемента.After the XmlReader is positioned on an element, the node properties, such as Name, reflect the element values. Кроме описанных ниже членов для обработки элементов процесса могут также использоваться любые методы и свойства класса XmlReader.In addition to the members described below, any of the general methods and properties of the XmlReader class can also be used to process elements. Например, для чтения содержимого элемента используется метод ReadInnerXml.For example, you can use the ReadInnerXml method to read the contents of an element.

Примечание

Определения открывающих тегов, закрывающих тегов и пустых тегов элементов см. в разделе 3,1 рекомендации консорциума W3C по XML 1,0 .See section 3.1 of the W3C XML 1.0 Recommendation for definitions of start tags, end tags, and empty element tags.

Использовать этот XmlReader элементUse this XmlReader member КомуTo
Метод IsStartElementIsStartElement method Проверьте, является ли текущий узел открывающим тегом или пустым тегом элемента.Check if the current node is a start tag or an empty element tag.
Метод ReadStartElementReadStartElement method Убедитесь, что текущий узел является элементом, и перейдите к следующему узлу (вызывается IsStartElement, за которым следует Read).Check that the current node is an element and advance the reader to the next node (calls IsStartElement followed by Read).
Метод ReadEndElementReadEndElement method Убедитесь, что текущий узел является закрывающим тегом и переместит читателя на следующий узел.Check that the current node is an end tag and advance the reader to the next node.
Метод ReadElementStringReadElementString method Чтение элемента, доступного только для текста.Read a text-only element.
Метод ReadToDescendantReadToDescendant method Передвиньте модуль чтения XML к следующему элементу-потомку (дочернему), имеющему указанное имя.Advance the XML reader to the next descendant (child) element that has the specified name.
Метод ReadToNextSiblingReadToNextSibling method Переместить модуль чтения XML к следующему родственному элементу с указанным именем.Advance the XML reader to the next sibling element that has the specified name.
СвойствоIsEmptyElementIsEmptyElement property Проверьте, содержит ли текущий элемент тег конечного элемента.Check if the current element has an end element tag. Например:For example:

<item num="123"/> - (IsEmptyElement true.)- <item num="123"/> (IsEmptyElement is true.)
- <item num="123"> </item> (IsEmptyElement false, хотя содержимое элемента пусто.)- <item num="123"> </item> (IsEmptyElement is false, although the element's content is empty.)

Пример чтения текстового содержимого элементов см. в описании метода ReadString.For an example of reading the text content of elements, see the ReadString method. В следующем примере элементы обрабатываются с помощью цикла while.The following example processes elements by using a while loop.

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.
    }
  } 
} 
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() Then ' Handle nested elements.
        Console.Write(vbCr + vbLf + "<{0}>", reader.Name)
      End If
      Console.WriteLine(reader.ReadString()) 'Read the text content of the element.
    End If
  End If
End While

Чтение атрибутов XMLReading XML attributes

Атрибуты XML чаще всего встречаются в элементах, но они также разрешены для XML-декларации и узлов типов документов.XML attributes are most commonly found on elements, but they're also allowed on XML declaration and document type nodes.

При позиционировании на узле элемента метод MoveToAttribute позволяет перемещаться по списку атрибутов элемента.When positioned on an element node, the MoveToAttribute method lets you go through the attribute list of the element. Обратите внимание, что после вызова MoveToAttribute свойства узла, такие как Name, NamespaceURIи Prefix, отражать свойства этого атрибута, а не свойства элемента, к которому принадлежит атрибут.Note that after MoveToAttribute has been called, node properties such as Name, NamespaceURI, and Prefix reflect the properties of that attribute, not the properties of the element the attribute belongs to.

Класс XmlReader предоставляет эти методы и свойства для чтения и обработки атрибутов элементов.The XmlReader class provides these methods and properties to read and process attributes on elements.

Использовать этот XmlReader элементUse this XmlReader member КомуTo
СвойствоHasAttributesHasAttributes property Проверьте, имеются ли у текущего узла какие либо атрибуты.Check whether the current node has any attributes.
СвойствоAttributeCountAttributeCount property Возвращает количество атрибутов текущего элемента.Get the number of attributes on the current element.
Метод MoveToFirstAttributeMoveToFirstAttribute method Перейти к первому атрибуту в элементе.Move to the first attribute in an element.
Метод MoveToNextAttributeMoveToNextAttribute method Переход к следующему атрибуту в элементе.Move to the next attribute in an element.
Метод MoveToAttributeMoveToAttribute method Перейти к указанному атрибуту.Move to a specified attribute.
метод GetAttribute или свойство Item[String, String]GetAttribute method or Item[String, String] property Получение значения указанного атрибута.Get the value of a specified attribute.
СвойствоIsDefaultIsDefault property Проверьте, является ли текущий узел атрибутом, созданным из значения по умолчанию, определенного в DTD или схеме.Check whether the current node is an attribute that was generated from the default value defined in the DTD or schema.
Метод MoveToElementMoveToElement method Переход к элементу, владеющему текущим атрибутом.Move to the element that owns the current attribute. Используйте этот метод, чтобы вернуться к элементу после перехода по его атрибутам.Use this method to return to an element after navigating through its attributes.
Метод ReadAttributeValueReadAttributeValue method Проанализируйте значение атрибута в одном или нескольких Text, EntityReferenceили узлах EndEntity.Parse the attribute value into one or more Text, EntityReference, or EndEntity nodes.

Для обработки атрибутов можно использовать и любые обычные методы и свойства объекта XmlReader.Any of the general XmlReader methods and properties can also be used to process attributes. Например, если объект XmlReader расположен на атрибуте, свойства Name и Value будут отражать значения этого атрибута.For example, after the XmlReader is positioned on an attribute, the Name and Value properties reflect the values of the attribute. Также можно использовать любые методы Read содержимого, чтобы получить значение атрибута.You can also use any of the content Read methods to get the value of the attribute.

В этом примере используется свойство AttributeCount для навигации по всем атрибутам элемента.This example uses the AttributeCount property to navigate through all the attributes on an element.

// Display all attributes.
if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  for (int i = 0; i < reader.AttributeCount; i++) {
    Console.WriteLine("  {0}", reader[i]);
  }
  // Move the reader back to the element node.
  reader.MoveToElement(); 
}
' Display all attributes.
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  Dim i As Integer
  For i = 0 To (reader.AttributeCount - 1)
    Console.WriteLine("  {0}", reader(i))
  Next i
  ' Move the reader back to the element node.
  reader.MoveToElement() 
End If

В этом примере используется метод MoveToNextAttribute в цикле while для перемещения по атрибутам.This example uses the MoveToNextAttribute method in a while loop to navigate through the attributes.

if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  while (reader.MoveToNextAttribute()) {
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  While reader.MoveToNextAttribute()
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value)
  End While
  ' Move the reader back to the element node.
  reader.MoveToElement()
End If

Чтение атрибутов на узлах объявления XMLReading attributes on XML declaration nodes

Когда модуль чтения XML располагается на узле объявления XML, свойство Value возвращает сведения о версии, автономной и кодировке в виде одной строки.When the XML reader is positioned on an XML declaration node, the Value property returns the version, standalone, and encoding information as a single string. XmlReader объекты, созданные методом Create, классом XmlTextReader и классом XmlValidatingReader предоставляют версию, автономную и кодировку элементов в качестве атрибутов.XmlReader objects created by the Create method, the XmlTextReader class, and the XmlValidatingReader class expose the version, standalone, and encoding items as attributes.

Чтение атрибутов на узлах типов документовReading attributes on document type nodes

Когда модуль чтения XML располагается на узле типа документа, для получения значений для системы и открытых литералов можно использовать метод GetAttribute и свойство Item[String, String].When the XML reader is positioned on a document type node, the GetAttribute method and Item[String, String] property can be used to return the values for the SYSTEM and PUBLIC literals. Например, вызов метода reader.GetAttribute("PUBLIC") возвращает значение PUBLIC.For example, calling reader.GetAttribute("PUBLIC") returns the PUBLIC value.

Чтение атрибутов на узлах инструкции по обработкеReading attributes on processing instruction nodes

Если XmlReader расположен на узле инструкций по обработке, свойство Value возвращает текстовое содержимое целиком.When the XmlReader is positioned on a processing instruction node, the Value property returns the entire text content. Элементы в узле инструкции по обработке не рассматриваются как атрибуты.Items in the processing instruction node aren't treated as attributes. Их невозможно прочитать с помощью метода GetAttribute или MoveToAttribute.They can't be read with the GetAttribute or MoveToAttribute method.

Чтение XML-содержимогоReading XML content

Класс XMLReader включает следующие члены, которые считывают содержимое из XML-файла и возвращают содержимое в виде строковых значений.The XMLReader class includes the following members that read content from an XML file and return the content as string values. (Чтобы получить типы CLR, см. следующий раздел.)(To return CLR types, see the next section.)

Использовать этот XmlReader элементUse this XmlReader member КомуTo
СвойствоValueValue property Возвращает текстовое содержимое текущего узла.Get the text content of the current node. Возвращаемое значение зависит от типа узла. Дополнительные сведения см. на странице справочника по Value.The value returned depends on the node type; see the Value reference page for details.
Метод ReadStringReadString method Получение содержимого элемента или текстового узла в виде строки.Get the content of an element or text node as a string. Этот метод прекращает работу в инструкциях по обработке и комментариях.This method stops on processing instructions and comments.

Дополнительные сведения о том, как этот метод обрабатывает определенные типы узлов, см. на странице справочника по ReadString.For details on how this method handles specific node types, see the ReadString reference page.
Методы ReadInnerXml и ReadInnerXmlAsyncReadInnerXml and ReadInnerXmlAsync methods Возвращает все содержимое текущего узла, включая разметку, но не исключая начальный и конечный теги.Get all the content of the current node, including the markup, but excluding start and end tags. Например, для:For example, for:

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

ReadInnerXml возвращает:ReadInnerXml returns:

this<child id="123"/>
Методы ReadOuterXml и ReadOuterXmlAsyncReadOuterXml and ReadOuterXmlAsync methods Получение всего содержимого текущего узла и его дочерних элементов, включая разметку и теги начала и окончания.Get all the content of the current node and its children, including markup and start/end tags. Например, для:For example, for:

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

ReadOuterXml возвращает:ReadOuterXml returns:

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

Преобразование в типы CLRConverting to CLR types

Члены класса XmlReader (перечисленные в следующей таблице) можно использовать для считывания XML-данных и возвращаемых значений в качестве типов среды CLR вместо строк.You can use the members of the XmlReader class (listed in the following table) to read XML data and return values as common language runtime (CLR) types instead of strings. Эти члены позволяют получать в представлении значения, наиболее подходящие для задачи кода, без необходимости вручную анализировать или преобразовывать строковые значения.These members enable you to get values in the representation that is most appropriate for your coding task without having to manually parse or convert string values.

  • Методы ReadElementContentAs могут вызываться только для типов узлов элементов.The ReadElementContentAs methods can only be called on element node types. Их нельзя использовать для элементов, содержащих дочерние элементы или смешанное содержимое.These methods cannot be used on elements that contain child elements or mixed content. Объект XmlReader при вызове считывает открывающий тег, читает содержимое элемента и перемещается за закрывающий тег элемента.When called, the XmlReader object reads the start tag, reads the element content, and then moves past the end element tag. Инструкции по обработке и комментарии пропускаются, а сущности раскрываются.Processing instructions and comments are ignored and entities are expanded.

  • Методы реадконтентас считывают текстовое содержимое в текущей позиции модуля чтения, и если с данными XML не связаны какие-либо схемы или сведения о типах данных, преобразуйте текстовое содержимое в запрошенный тип возвращаемого значения.The ReadContentAs methods read the text content at the current reader position, and if the XML data doesn't have any schema or data type information associated with it, convert the text content to the requested return type. Текст, пробелы, значимые пробелы и разделы CDATA объединяются.Text, white space, significant white space and CDATA sections are concatenated. Комментарии и инструкции по обработке пропускаются, и ссылки на сущности разрешаются автоматически.Comments and processing instructions are skipped, and entity references are automatically resolved.

Класс XmlReader использует правила, определенные в рекомендации консорциума W3C по XML-схеме, часть 2: типы данных.The XmlReader class uses the rules defined by the W3C XML Schema Part 2: Datatypes recommendation.

Используйте этот метод XmlReaderUse this XmlReader method Возврат этого типа CLRTo return this CLR type
ReadContentAsBoolean и ReadElementContentAsBooleanReadContentAsBoolean and ReadElementContentAsBoolean Boolean
ReadContentAsDateTime и ReadElementContentAsDateTimeReadContentAsDateTime and ReadElementContentAsDateTime DateTime
ReadContentAsDouble и ReadElementContentAsDoubleReadContentAsDouble and ReadElementContentAsDouble Double
ReadContentAsLong и ReadElementContentAsLongReadContentAsLong and ReadElementContentAsLong Int64
ReadContentAsInt и ReadElementContentAsIntReadContentAsInt and ReadElementContentAsInt Int32
ReadContentAsString и ReadElementContentAsStringReadContentAsString and ReadElementContentAsString String
ReadContentAs и ReadElementContentAsReadContentAs and ReadElementContentAs Тип, указанный с помощью параметра returnTypeThe type you specify with the returnType parameter
ReadContentAsObject и ReadElementContentAsObjectReadContentAsObject and ReadElementContentAsObject Наиболее подходящий тип, как указано в свойстве XmlReader.ValueType.The most appropriate type, as specified by the XmlReader.ValueType property. Сведения о сопоставлении см. в разделе Поддержка типов в классах System. XML .See Type Support in the System.Xml Classes for mapping information.

Если элемент невозможно легко преобразовать в тип CLR из-за его формата, можно использовать сопоставление схемы для успешного преобразования.If an element can't easily be converted to a CLR type because of its format, you can use a schema mapping to ensure a successful conversion. В следующем примере используется XSD-файл для преобразования элемента hire-date в тип xs:date, а затем используется метод ReadElementContentAsDateTime для возврата элемента в виде объекта DateTime.The following example uses an .xsd file to convert the hire-date element to the xs:date type, and then uses the ReadElementContentAsDateTime method to return the element as a DateTime object.

Ввод (hireDate. XML):Input (hireDate.xml):

<employee xmlns="urn:empl-hire">
    <ID>12365</ID>
    <hire-date>2003-01-08</hire-date>
    <title>Accountant</title>
</employee>

Схема (hireDate. xsd):Schema (hireDate.xsd):

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:empl-hire" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ID" type="xs:unsignedShort" />
        <xs:element name="hire-date" type="xs:date" />
        <xs:element name="title" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

ПриведенCode:

// Create a validating XmlReader object. The schema 
// provides the necessary type information.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd");
using (XmlReader reader = XmlReader.Create("hireDate.xml", settings)) {

  // Move to the hire-date element.
  reader.MoveToContent();
  reader.ReadToDescendant("hire-date");

  // Return the hire-date as a DateTime object.
  DateTime hireDate = reader.ReadElementContentAsDateTime();
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6));
}
' Create a validating XmlReader object. The schema 
' provides the necessary type information.
Dim settings As XmlReaderSettings = New XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd")
Using reader As XmlReader = XmlReader.Create("hireDate.xml", settings) 
  ' Move to the hire-date element.
  reader.MoveToContent()
  reader.ReadToDescendant("hire-date")

  ' Return the hire-date as a DateTime object.
  Dim hireDate As DateTime = reader.ReadElementContentAsDateTime()
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6))
End Using

Выходные данные:Output:

Six Month Review Date:  7/8/2003 12:00:00 AM  

Асинхронное программированиеAsynchronous programming

Большинство методов XmlReader имеют асинхронные аналоги, имеющие "Async" в конце имен методов.Most of the XmlReader methods have asynchronous counterparts that have "Async" at the end of their method names. Например, асинхронный эквивалент ReadContentAsObject ReadContentAsObjectAsync.For example, the asynchronous equivalent of ReadContentAsObject is ReadContentAsObjectAsync.

С асинхронными вызовами методов можно использовать следующие методы:The following methods can be used with asynchronous method calls:

В следующих разделах описывается асинхронное использование для методов, которые не имеют асинхронных аналогов.The following sections describe asynchronous usage for methods that don't have asynchronous counterparts.

Метод РеадстартелементReadStartElement method

public static async Task ReadStartElementAsync(this XmlReader reader, string localname, string ns)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.Element)
    {
        throw new InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType");
    }
    if ((reader.LocalName == localname) && (reader.NamespaceURI == ns))
    {
        await reader.ReadAsync();
    }
    else
    {
        throw new InvalidOperationException("localName or namespace doesn’t match");
    }
}
<Extension()>
Public Async Function ReadStartElementAsync(reader As XmlReader, localname As String, ns As String) As Task
    If (Await reader.MoveToContentAsync() <> XmlNodeType.Element) Then
        Throw New InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType")
    End If

    If ((reader.LocalName = localname) And (reader.NamespaceURI = ns)) Then
        Await reader.ReadAsync()
    Else
        Throw New InvalidOperationException("localName or namespace doesn’t match")
    End If
End Function

Метод РеаденделементReadEndElement method

public static async Task ReadEndElementAsync(this XmlReader reader)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.EndElement)
    {
        throw new InvalidOperationException();
    }
    await reader.ReadAsync();
}
<Extension()>
Public Async Function ReadEndElementAsync(reader As XmlReader) As task
    If (Await reader.MoveToContentAsync() <> XmlNodeType.EndElement) Then
        Throw New InvalidOperationException()
    End If
    Await reader.ReadAsync()
End Function

Метод РеадтонекстсиблингReadToNextSibling method

public static async Task<bool> ReadToNextSiblingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the next sibling
    XmlNodeType nt;
    do
    {
        await reader.SkipAsync();
        if (reader.ReadState != ReadState.Interactive)
            break;
        nt = reader.NodeType;
        if (nt == XmlNodeType.Element &&
             ((object)localName == (object)reader.LocalName) &&
             ((object)namespaceURI ==(object)reader.NamespaceURI))
        {
            return true;
        }
    } while (nt != XmlNodeType.EndElement && !reader.EOF);
    
    return false;
}
<Extension()>
Public Async Function ReadToNextSiblingAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find the next sibling
    Dim nt As XmlNodeType
    Do

        Await reader.SkipAsync()
        If (reader.ReadState <> ReadState.Interactive) Then
            Exit Do
        End If
        nt = reader.NodeType
        If ((nt = XmlNodeType.Element) And
           ((CObj(localName) = CObj(reader.LocalName))) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    Loop While (nt <> XmlNodeType.EndElement And (Not reader.EOF))

    Return False

End Function

Метод РеадтофолловингReadToFollowing method

public static async Task<bool> ReadToFollowingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find element with that name
    while (await reader.ReadAsync())
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}
<Extension()>
Public Async Function ReadToFollowingAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find element with that name
    While (Await reader.ReadAsync())
        If ((reader.NodeType = XmlNodeType.Element) And
           (CObj(localName) = CObj(reader.LocalName)) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    End While

    Return False
End Function

Метод РеадтодесцендантReadToDescendant method

public static async Task<bool> ReadToDescendantAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }
    // save the element or root depth
    int parentDepth = reader.Depth;
    if (reader.NodeType != XmlNodeType.Element)
    {
        // adjust the depth if we are on root node
        if (reader.ReadState == ReadState.Initial)
        {
            parentDepth--;
        }
        else
        {
            return false;
        }
    }
    else if (reader.IsEmptyElement)
    {
        return false;
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the descendant
    while (await reader.ReadAsync() && reader.Depth > parentDepth)
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}
<Extension()>
Public Async Function ReadToDescendantAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' save the element or root depth
    Dim parentDepth As Integer = reader.Depth
    If (reader.NodeType <> XmlNodeType.Element) Then
        ' adjust the depth if we are on root node
        If (reader.ReadState = ReadState.Initial) Then
            parentDepth -= 1
        Else
            Return False
        End If
    ElseIf (reader.IsEmptyElement) Then
        Return False
    End If
    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find the descendant
    While (Await reader.ReadAsync() And reader.Depth > parentDepth)
        If (reader.NodeType = XmlNodeType.Element And
           (CObj(localName) = CObj(reader.LocalName)) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    End While

    Return False
End Function

Замечания по безопасностиSecurity considerations

При работе с классом XmlReader учитывайте следующее.Consider the following when working with the XmlReader class:

  • Исключения, вызываемые из XmlReader, могут раскрывать сведения о пути, которые не должны быть собраны в приложение.Exceptions thrown from the XmlReader can disclose path information that you might not want bubbled up to your app. Приложение должно перехватывать исключения и обрабатывать их соответствующим образом.Your app must catch exceptions and process them appropriately.

  • Не включайте обработку DTD, если у вас возникли проблемы отказа в обслуживании или если вы работаете с ненадежными источниками.Do not enable DTD processing if you're concerned about denial of service issues or if you're dealing with untrusted sources. Обработка DTD отключена по умолчанию для объектов XmlReader, созданных методом Create.DTD processing is disabled by default for XmlReader objects created by the Create method.

    Если обработка DTD включена, то с помощью класса XmlSecureResolver можно ограничить ресурсы, доступные для объекта XmlReader.If you have DTD processing enabled, you can use the XmlSecureResolver to restrict the resources that the XmlReader can access. Можно также спроектировать приложение таким образом, чтобы обработка XML была ограничена памятью и временем.You can also design your app so that the XML processing is memory and time constrained. Например, можно настроить ограничения времени ожидания в приложении ASP.NET.For example, you can configure time-out limits in your ASP.NET app.

  • XML-данные могут содержать ссылки на внешние ресурсы, например файл схемы.XML data can include references to external resources such as a schema file. По умолчанию внешние ресурсы разрешаются с помощью объекта XmlUrlResolver без учетных данных пользователя.By default, external resources are resolved by using an XmlUrlResolver object with no user credentials. Это можно сделать еще более безопасным, выполнив одно из следующих действий.You can secure this further by doing one of the following:

  • Флаги проверки ProcessInlineSchema и ProcessSchemaLocation объекта XmlReaderSettings не устанавливаются по умолчанию.The ProcessInlineSchema and ProcessSchemaLocation validation flags of an XmlReaderSettings object aren't set by default. Это позволяет защитить объект XmlReader от атак на основе схем при обработке XML-данных из ненадежного источника.This helps to protect the XmlReader against schema-based attacks when it is processing XML data from an untrusted source. Если эти флаги установлены, для разрешения расположения схем, обнаруженных в экземпляре документа в объекте XmlResolver, используется арбитр XmlReaderSettings объекта XmlReader.When these flags are set, the XmlResolver of the XmlReaderSettings object is used to resolve schema locations encountered in the instance document in the XmlReader. Если свойство XmlResolver имеет значение null, расположение схемы не разрешается, даже если установлены флаги проверки ProcessInlineSchema и ProcessSchemaLocation.If the XmlResolver property is set to null, schema locations aren't resolved even if the ProcessInlineSchema and ProcessSchemaLocation validation flags are set.

    Схемы, добавленные во время проверки, добавляют новые типы и могут изменить результат проверки документа.Schemas added during validation add new types and can change the validation outcome of the document being validated. Поэтому следует разрешать только внешние схемы из доверенных источников.As a result, external schemas should only be resolved from trusted sources.

    Рекомендуется отключить флаг ProcessIdentityConstraints при проверке ненадежных, больших XML-документов в сценариях с высоким уровнем доступности в отношении схемы, имеющей ограничения идентификации, в большой части документа.We recommend disabling the ProcessIdentityConstraints flag when validating untrusted, large XML documents in high availability scenarios against a schema that has identity constraints over a large part of the document. Этот флаг включен по умолчанию.This flag is enabled by default.

  • XML-данные могут содержать большое количество атрибутов, деклараций пространств имен, вложенных элементов и так далее, на обработку которых требуется значительное время.XML data can contain a large number of attributes, namespace declarations, nested elements and so on that require a substantial amount of time to process. Чтобы ограничить размер входных данных, отправляемых в XmlReader, можно:To limit the size of the input that is sent to the XmlReader, you can:

    • Ограничьте размер документа, задав свойство MaxCharactersInDocument.Limit the size of the document by setting the MaxCharactersInDocument property.

    • Ограничьте число символов, появляющихся в результате расширения сущностей, установив свойство MaxCharactersFromEntities.Limit the number of characters that result from expanding entities by setting the MaxCharactersFromEntities property.

    • Создайте пользовательскую реализацию IStream для XmlReader.Create a custom IStream implementation for the XmlReader.

  • Метод ReadValueChunk можно использовать для управления большими потоками данных.The ReadValueChunk method can be used to handle large streams of data. Этот метод за раз считывает небольшое число символов, а не выделяет одну строку для всего значения.This method reads a small number of characters at a time instead of allocating a single string for the whole value.

  • При чтении XML-документа с большим количеством уникальных локальных имен, пространств имен или префиксов может возникнуть проблема.When reading an XML document with a large number of unique local names, namespaces, or prefixes, a problem can occur. Если вы используете класс, производный от XmlReader, и вызываете свойство LocalName, Prefixили NamespaceURI для каждого элемента, возвращаемая строка добавляется в NameTable.If you are using a class that derives from XmlReader, and you call the LocalName, Prefix, or NamespaceURI property for each item, the returned string is added to a NameTable. Коллекция, удерживаемая NameTable, никогда не уменьшается в размере, создавая утечку виртуальной памяти дескрипторов строк.The collection held by the NameTable never decreases in size, creating a virtual memory leak of the string handles. Одним из способов устранения этой проблемы является наследование от класса NameTable и принудительная квота максимального размера.One mitigation for this is to derive from the NameTable class and enforce a maximum size quota. (Не существует способа предотвратить использование NameTableили переключить NameTable при заполнении).(There is no way to prevent the use of a NameTable, or to switch the NameTable when it is full). Еще один способ устранения проблемы заключается в предотвращении использования упомянутых свойств, вместо этого используйте метод MoveToAttribute с методом IsStartElement, где это возможно. Эти методы не возвращают строки и, таким же, избегают проблемы переполнения коллекции NameTable.Another mitigation is to avoid using the properties mentioned and instead use the MoveToAttribute method with the IsStartElement method where possible; those methods don't return strings and thus avoid the problem of overfilling the NameTable collection.

  • Объекты XmlReaderSettings могут содержать конфиденциальные сведения, например учетные данные пользователей.XmlReaderSettings objects can contain sensitive information such as user credentials. Ненадежный компонент может использовать объект XmlReaderSettings и его учетные данные пользователя, чтобы создавать объекты XmlReader для считывания данных.An untrusted component could use the XmlReaderSettings object and its user credentials to create XmlReader objects to read data. Будьте внимательны при кэшировании XmlReaderSettings объектов или при передаче объекта XmlReaderSettings из одного компонента в другой.Be careful when caching XmlReaderSettings objects, or when passing the XmlReaderSettings object from one component to another.

  • Не следует принимать вспомогательные компоненты, например объекты NameTable, XmlNamespaceManager и XmlResolver, из ненадежных источников.Do not accept supporting components, such as NameTable, XmlNamespaceManager, and XmlResolver objects, from an untrusted source.

Конструкторы

XmlReader()

Инициализирует новый экземпляр класса XmlReader.Initializes a new instance of the XmlReader class.

Свойства

AttributeCount

Когда переопределено в производном классе, возвращает количество атрибутов текущего узла.When overridden in a derived class, gets the number of attributes on the current node.

BaseURI

При переопределении в производном классе получает базовый URI текущего узла.When overridden in a derived class, gets the base URI of the current node.

CanReadBinaryContent

Получает значение, указывающее, реализует ли объект XmlReader методы чтения двоичного содержимого.Gets a value indicating whether the XmlReader implements the binary content read methods.

CanReadValueChunk

Возвращает значение, указывающее, реализует ли объект XmlReader метод ReadValueChunk(Char[], Int32, Int32).Gets a value indicating whether the XmlReader implements the ReadValueChunk(Char[], Int32, Int32) method.

CanResolveEntity

Возвращает значение, определяющее, способно ли данное средство чтения выполнять синтаксический анализ и разрешение сущностей.Gets a value indicating whether this reader can parse and resolve entities.

Depth

При переопределении в производном классе получает глубину текущего узла в XML-документе.When overridden in a derived class, gets the depth of the current node in the XML document.

EOF

Когда переопределено в производном классе, возвращает значение, показывающее, позиционировано ли средство чтения в конец потока.When overridden in a derived class, gets a value indicating whether the reader is positioned at the end of the stream.

HasAttributes

Возвращает значение, показывающее, имеются ли атрибуты у текущего узла.Gets a value indicating whether the current node has any attributes.

HasValue

При переопределении в производном классе получает значение, показывающее, имеет ли текущий узел свойство Value.When overridden in a derived class, gets a value indicating whether the current node can have a Value.

IsDefault

Когда переопределено в производном классе, возвращает значение, определяющее, является ли текущий узел атрибутом, созданным из значения по умолчанию, определенного в DTD или схеме.When overridden in a derived class, gets a value indicating whether the current node is an attribute that was generated from the default value defined in the DTD or schema.

IsEmptyElement

При переопределении в производном классе получает значение, указывающее, является ли текущий узел пустым элементом (например, <MyElement/>).When overridden in a derived class, gets a value indicating whether the current node is an empty element (for example, <MyElement/>).

Item[Int32]

Когда переопределено в производном классе, возвращает значение атрибута по указанному индексу.When overridden in a derived class, gets the value of the attribute with the specified index.

Item[String, String]

При переопределении в производном классе получает значение атрибута с указанными свойствами LocalName и NamespaceURI.When overridden in a derived class, gets the value of the attribute with the specified LocalName and NamespaceURI.

Item[String]

При переопределении в производном классе получает значение атрибута с указанным свойством Name.When overridden in a derived class, gets the value of the attribute with the specified Name.

LocalName

При переопределении в производном классе получает локальное имя текущего узла.When overridden in a derived class, gets the local name of the current node.

Name

Когда переопределено в производном классе, возвращает полное имя текущего узла.When overridden in a derived class, gets the qualified name of the current node.

NamespaceURI

При переопределении в производном классе получает URI пространства имен (определенное в спецификации W3C Namespace) узла, на котором расположено средство чтения.When overridden in a derived class, gets the namespace URI (as defined in the W3C Namespace specification) of the node on which the reader is positioned.

NameTable

При переопределении в производном классе получает класс XmlNameTable, связанный с данной реализацией.When overridden in a derived class, gets the XmlNameTable associated with this implementation.

NodeType

Когда переопределено в производном классе, возвращает тип текущего узла.When overridden in a derived class, gets the type of the current node.

Prefix

Когда переопределено в производном классе, возвращает префикс пространства имен, связанный с текущим узлом.When overridden in a derived class, gets the namespace prefix associated with the current node.

QuoteChar

При переопределении в производном классе получает знак кавычек для выделения значения узла атрибута.When overridden in a derived class, gets the quotation mark character used to enclose the value of an attribute node.

ReadState

Когда переопределено в производном классе, возвращает состояние средства чтения.When overridden in a derived class, gets the state of the reader.

SchemaInfo

Возвращает сведения схемы, которые были назначены текущему узлу в результате проверки схемы.Gets the schema information that has been assigned to the current node as a result of schema validation.

Settings

Получает объект XmlReaderSettings, используемый для создания данного экземпляра XmlReader.Gets the XmlReaderSettings object used to create this XmlReader instance.

Value

Когда переопределено в производном классе, возвращает текстовое значение текущего узла.When overridden in a derived class, gets the text value of the current node.

ValueType

Возвращает тип CLR текущего узла.Gets The Common Language Runtime (CLR) type for the current node.

XmlLang

При переопределении в производном классе получает текущую область действия xml:lang.When overridden in a derived class, gets the current xml:lang scope.

XmlSpace

При переопределении в производном классе получает текущую область действия xml:space.When overridden in a derived class, gets the current xml:space scope.

Методы

Close()

При переопределении в производном классе изменяет значение свойства ReadState на Closed.When overridden in a derived class, changes the ReadState to Closed.

Create(Stream)

Создает новый экземпляр XmlReader, используя заданный поток с параметрами по умолчанию.Creates a new XmlReader instance using the specified stream with default settings.

Create(Stream, XmlReaderSettings)

Создает экземпляр XmlReader с указанными потоком и параметрами.Creates a new XmlReader instance with the specified stream and settings.

Create(Stream, XmlReaderSettings, String)

Создает новый экземпляр XmlReader с использованием указанного потока, базового URI и параметров.Creates a new XmlReader instance using the specified stream, base URI, and settings.

Create(Stream, XmlReaderSettings, XmlParserContext)

Создает новый экземпляр XmlReader, используя заданный поток, параметры и контекстную информацию для анализа.Creates a new XmlReader instance using the specified stream, settings, and context information for parsing.

Create(String)

Создает новый экземпляр XmlReader с указанным URI.Creates a new XmlReader instance with specified URI.

Create(String, XmlReaderSettings)

Создает новый экземпляр XmlReader с использованием указанного URI и параметров.Creates a new XmlReader instance by using the specified URI and settings.

Create(String, XmlReaderSettings, XmlParserContext)

Создает новый экземпляр XmlReader с помощью указанного URI, параметров и сведений о контексте для анализа.Creates a new XmlReader instance by using the specified URI, settings, and context information for parsing.

Create(TextReader)

Создает экземпляр XmlReader с использованием указанного средства чтения текста.Creates a new XmlReader instance by using the specified text reader.

Create(TextReader, XmlReaderSettings)

Создает новый экземпляр XmlReader с использованием указанного модуля чтения текста и параметров.Creates a new XmlReader instance by using the specified text reader and settings.

Create(TextReader, XmlReaderSettings, String)

Создает экземпляр XmlReader с использованием указанного средства чтения текста, параметров и базового кода URI.Creates a new XmlReader instance by using the specified text reader, settings, and base URI.

Create(TextReader, XmlReaderSettings, XmlParserContext)

Создает новый экземпляр XmlReader с использованием указанного средства чтения текста, параметров и сведений о контексте для анализа.Creates a new XmlReader instance by using the specified text reader, settings, and context information for parsing.

Create(XmlReader, XmlReaderSettings)

Создает новый экземпляр XmlReader, используя заданное средство чтения XML и параметры.Creates a new XmlReader instance by using the specified XML reader and settings.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса XmlReader.Releases all resources used by the current instance of the XmlReader class.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом XmlReader, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the XmlReader and optionally releases the managed resources.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetAttribute(Int32)

При переопределении в производном классе получает значение атрибута по указанному индексу.When overridden in a derived class, gets the value of the attribute with the specified index.

GetAttribute(String)

При переопределении в производном классе получает значение атрибута с указанным свойством Name.When overridden in a derived class, gets the value of the attribute with the specified Name.

GetAttribute(String, String)

При переопределении в производном классе получает значение атрибута с указанными свойствами LocalName и NamespaceURI.When overridden in a derived class, gets the value of the attribute with the specified LocalName and NamespaceURI.

GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
GetValueAsync()

Асинхронно получает значение текущего узла.Asynchronously gets the value of the current node.

IsName(String)

Возвращает значение, определяющее, является ли строковый аргумент допустимым именем XML.Returns a value indicating whether the string argument is a valid XML name.

IsNameToken(String)

Возвращает значение, определяющее, является ли строковый аргумент допустимым токеном имени XML.Returns a value indicating whether or not the string argument is a valid XML name token.

IsStartElement()

Вызывает метод MoveToContent() и проверяет, является ли текущий узел содержимого открывающим тегом или пустым тегом элемента.Calls MoveToContent() and tests if the current content node is a start tag or empty element tag.

IsStartElement(String)

Вызывает метод MoveToContent() и проверяет, является ли текущий узел содержимого открывающим тегом или пустым тегом элемента, а также соответствует ли значение свойства Name элемента заданному аргументу.Calls MoveToContent() and tests if the current content node is a start tag or empty element tag and if the Name property of the element found matches the given argument.

IsStartElement(String, String)

Вызывает метод MoveToContent() и проверяет, является ли текущий узел содержимого открывающим тегом или пустым тегом элемента, а также соответствуют ли значения свойств LocalName и NamespaceURI элемента заданным строкам.Calls MoveToContent() and tests if the current content node is a start tag or empty element tag and if the LocalName and NamespaceURI properties of the element found match the given strings.

LookupNamespace(String)

При переопределении в производном классе разрешает префикс пространства имен в ограниченной области действия текущего элемента.When overridden in a derived class, resolves a namespace prefix in the current element's scope.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
MoveToAttribute(Int32)

Когда переопределено в производном классе, переходит к атрибуту с указанным индексом.When overridden in a derived class, moves to the attribute with the specified index.

MoveToAttribute(String)

При переопределении в производном классе перемещает к атрибуту с указанным Name.When overridden in a derived class, moves to the attribute with the specified Name.

MoveToAttribute(String, String)

При переопределении в производном классе перемещает к атрибуту с указанными LocalName и NamespaceURI.When overridden in a derived class, moves to the attribute with the specified LocalName and NamespaceURI.

MoveToContent()

Проверяет, является ли текущий узел узлом содержимого (текст без пустого пространства, CDATA, Element, EndElement, EntityReference или EndEntity).Checks whether the current node is a content (non-white space text, CDATA, Element, EndElement, EntityReference, or EndEntity) node. Если узел не является узлом содержимого, средство чтения пропускает этот узел и переходит к следующему узлу содержимого или в конец файла.If the node is not a content node, the reader skips ahead to the next content node or end of file. Пропускаются узлы следующих типов: ProcessingInstruction, DocumentType, Comment, Whitespace и SignificantWhitespace.It skips over nodes of the following type: ProcessingInstruction, DocumentType, Comment, Whitespace, or SignificantWhitespace.

MoveToContentAsync()

В асинхронном режиме проверяет, является ли текущий узел узлом содержимого.Asynchronously checks whether the current node is a content node. Если узел не является узлом содержимого, средство чтения пропускает этот узел и переходит к следующему узлу содержимого или в конец файла.If the node is not a content node, the reader skips ahead to the next content node or end of file.

MoveToElement()

Когда переопределено в производном классе, переходит к элементу, содержащему текущий узел атрибута.When overridden in a derived class, moves to the element that contains the current attribute node.

MoveToFirstAttribute()

Когда переопределено в производном классе, переходит к первому атрибуту.When overridden in a derived class, moves to the first attribute.

MoveToNextAttribute()

Когда переопределено в производном классе, переходит к следующему атрибуту.When overridden in a derived class, moves to the next attribute.

Read()

Когда переопределено в производном классе, считывает из потока следующий узел.When overridden in a derived class, reads the next node from the stream.

ReadAsync()

Асинхронно считывает следующий узел из потока.Asynchronously reads the next node from the stream.

ReadAttributeValue()

При переопределении в производном классе разбирает значение атрибута в один или более узлов Text, EntityReference или EndEntity.When overridden in a derived class, parses the attribute value into one or more Text, EntityReference, or EndEntity nodes.

ReadContentAs(Type, IXmlNamespaceResolver)

Прочитывает содержимое объекта указанного типа.Reads the content as an object of the type specified.

ReadContentAsAsync(Type, IXmlNamespaceResolver)

Асинхронно считывает содержимое как объект указанного типа.Asynchronously reads the content as an object of the type specified.

ReadContentAsBase64(Byte[], Int32, Int32)

Считывает содержимое и возвращает раскодированные двоичные байты Base64.Reads the content and returns the Base64 decoded binary bytes.

ReadContentAsBase64Async(Byte[], Int32, Int32)

Асинхронно считывает содержимое и возвращает раскодированные двоичные байты Base64.Asynchronously reads the content and returns the Base64 decoded binary bytes.

ReadContentAsBinHex(Byte[], Int32, Int32)

Считывает содержимое и возвращает раскодированные двоичные байты BinHex.Reads the content and returns the BinHex decoded binary bytes.

ReadContentAsBinHexAsync(Byte[], Int32, Int32)

Асинхронно считывает содержимое и возвращает раскодированные двоичные байты BinHex.Asynchronously reads the content and returns the BinHex decoded binary bytes.

ReadContentAsBoolean()

Считывает содержимое текста в текущей позиции как значение Boolean.Reads the text content at the current position as a Boolean.

ReadContentAsDateTime()

Считывает содержимое текста в текущем положении как объект DateTime.Reads the text content at the current position as a DateTime object.

ReadContentAsDateTimeOffset()

Считывает содержимое текста в текущем положении как объект DateTimeOffset.Reads the text content at the current position as a DateTimeOffset object.

ReadContentAsDecimal()

Считывает содержимое текста в текущем положении как объект Decimal.Reads the text content at the current position as a Decimal object.

ReadContentAsDouble()

Считывает содержимое текста в текущей позиции как число с плавающей запятой двойной точности.Reads the text content at the current position as a double-precision floating-point number.

ReadContentAsFloat()

Считывает содержимое текста в текущей позиции как число с плавающей запятой одинарной точности.Reads the text content at the current position as a single-precision floating point number.

ReadContentAsInt()

Считывает содержимое текста в текущем положении как 32-разрядное знаковое целое число.Reads the text content at the current position as a 32-bit signed integer.

ReadContentAsLong()

Считывает текстовое содержимое в текущей позиции как 64-разрядное целое число со знаком.Reads the text content at the current position as a 64-bit signed integer.

ReadContentAsObject()

Считывает содержимое текста в текущей позиции как значение Object.Reads the text content at the current position as an Object.

ReadContentAsObjectAsync()

Асинхронно считывает содержимое текста в текущем положении как объект Object.Asynchronously reads the text content at the current position as an Object.

ReadContentAsString()

Считывает содержимое текста в текущем положении как объект String.Reads the text content at the current position as a String object.

ReadContentAsStringAsync()

Асинхронно считывает содержимое текста в текущем положении как объект String.Asynchronously reads the text content at the current position as a String object.

ReadElementContentAs(Type, IXmlNamespaceResolver)

Считывает содержимое элемента в качестве требуемого типа.Reads the element content as the requested type.

ReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

Проверяет, сопоставлен ли URI локального имени и пространства имен с URI текущего элемента, затем считывает содержимое элемента требуемого типа.Checks that the specified local name and namespace URI matches that of the current element, then reads the element content as the requested type.

ReadElementContentAsAsync(Type, IXmlNamespaceResolver)

Асинхронно считывает содержимое элемента как запрашиваемый тип.Asynchronously reads the element content as the requested type.

ReadElementContentAsBase64(Byte[], Int32, Int32)

Считывает элемент и декодирует содержимое Base64.Reads the element and decodes the Base64 content.

ReadElementContentAsBase64Async(Byte[], Int32, Int32)

Асинхронно считывает элемент и расшифровывает содержимое Base64.Asynchronously reads the element and decodes the Base64 content.

ReadElementContentAsBinHex(Byte[], Int32, Int32)

Считывает элемент и декодирует содержимое BinHex.Reads the element and decodes the BinHex content.

ReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

Асинхронно считывает элемент и расшифровывает содержимое BinHex.Asynchronously reads the element and decodes the BinHex content.

ReadElementContentAsBoolean()

Считывает текущий элемент и возвращает содержимое объекта Boolean.Reads the current element and returns the contents as a Boolean object.

ReadElementContentAsBoolean(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как объект Boolean.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a Boolean object.

ReadElementContentAsDateTime()

Считывает текущий элемент и возвращает содержимое объекта DateTime.Reads the current element and returns the contents as a DateTime object.

ReadElementContentAsDateTime(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как объект DateTime.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a DateTime object.

ReadElementContentAsDecimal()

Считывает текущий элемент и возвращает содержимое объекта Decimal.Reads the current element and returns the contents as a Decimal object.

ReadElementContentAsDecimal(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как объект Decimal.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a Decimal object.

ReadElementContentAsDouble()

Считывает текущий элемент и возвращает содержимое как число с плавающей запятой двойной точности.Reads the current element and returns the contents as a double-precision floating-point number.

ReadElementContentAsDouble(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как число с плавающей запятой двойной точности.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a double-precision floating-point number.

ReadElementContentAsFloat()

Считывает текущий элемент и возвращает содержимое как число с плавающей запятой одинарной точности.Reads the current element and returns the contents as single-precision floating-point number.

ReadElementContentAsFloat(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как число с плавающей запятой одинарной точности.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a single-precision floating-point number.

ReadElementContentAsInt()

Считывает текущий элемент и возвращает содержимое в виде 32-разрядного целого числа со знаком.Reads the current element and returns the contents as a 32-bit signed integer.

ReadElementContentAsInt(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как 32-разрядное целое число со знаком.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a 32-bit signed integer.

ReadElementContentAsLong()

Считывает текущий элемент и возвращает содержимое в виде 64-разрядного целого числа со знаком.Reads the current element and returns the contents as a 64-bit signed integer.

ReadElementContentAsLong(String, String)

Проверяет, совпадают ли указанные локальное имя и URI пространства имен с таковыми для текущего элемента, затем считывает текущий элемент и возвращает содержимое как 64-разрядное целое число со знаком.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a 64-bit signed integer.

ReadElementContentAsObject()

Прочитывает текущий элемент и возвращает содержимое в качестве объекта Object.Reads the current element and returns the contents as an Object.

ReadElementContentAsObject(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как объект Object.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as an Object.

ReadElementContentAsObjectAsync()

Асинхронно считывает текущий элемент и возвращает содержимое как объект Object.Asynchronously reads the current element and returns the contents as an Object.

ReadElementContentAsString()

Считывает текущий элемент и возвращает содержимое объекта String.Reads the current element and returns the contents as a String object.

ReadElementContentAsString(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как объект String.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a String object.

ReadElementContentAsStringAsync()

Асинхронно считывает текущий элемент и возвращает содержимое как объект String.Asynchronously reads the current element and returns the contents as a String object.

ReadElementString()

Считывает элемент, предназначенный только для чтения.Reads a text-only element. Однако рекомендуем использовать вместо этого метод ReadElementContentAsString(), предполагающий более простой способ обработки данной операции.However, we recommend that you use the ReadElementContentAsString() method instead, because it provides a more straightforward way to handle this operation.

ReadElementString(String)

Проверяет перед чтением текстового элемента соответствие значения свойства Name найденного элемента и заданной строки.Checks that the Name property of the element found matches the given string before reading a text-only element. Однако рекомендуем использовать вместо этого метод ReadElementContentAsString(), предполагающий более простой способ обработки данной операции.However, we recommend that you use the ReadElementContentAsString() method instead, because it provides a more straightforward way to handle this operation.

ReadElementString(String, String)

Проверяет перед чтением текстового элемента соответствие значений свойств LocalName и NamespaceURI найденного элемента и заданных строк.Checks that the LocalName and NamespaceURI properties of the element found matches the given strings before reading a text-only element. Однако рекомендуем использовать вместо этого метод ReadElementContentAsString(String, String), предполагающий более простой способ обработки данной операции.However, we recommend that you use the ReadElementContentAsString(String, String) method instead, because it provides a more straightforward way to handle this operation.

ReadEndElement()

Проверяет, является ли текущий узел содержимого закрывающим тегом, и позиционирует средство чтения на следующий узел.Checks that the current content node is an end tag and advances the reader to the next node.

ReadInnerXml()

При переопределении в производном классе считывает все содержимое, включая разметку, как строку.When overridden in a derived class, reads all the content, including markup, as a string.

ReadInnerXmlAsync()

Асинхронно считывает все содержимое, включая разметку, в виде строки.Asynchronously reads all the content, including markup, as a string.

ReadOuterXml()

При переопределении в производном классе считывает содержимое в виде строки, включая разметку, предоставляющую этот узел и все его дочерние узлы.When overridden in a derived class, reads the content, including markup, representing this node and all its children.

ReadOuterXmlAsync()

Асинхронно считывает содержимое в виде строки, включая разметку, предоставляющую этот узел и все его дочерние узлы.Asynchronously reads the content, including markup, representing this node and all its children.

ReadStartElement()

Проверяет, является ли текущий узел элементом и перемещает модуль чтения к следующему узлу.Checks that the current node is an element and advances the reader to the next node.

ReadStartElement(String)

Проверяет, является ли текущий узел элементом с заданным Name, и перемещает средство чтения на следующий узел.Checks that the current content node is an element with the given Name and advances the reader to the next node.

ReadStartElement(String, String)

Проверяет, является ли текущий узел элементом с заданным LocalName и NamespaceURI, и перемещает средство чтения на следующий узел.Checks that the current content node is an element with the given LocalName and NamespaceURI and advances the reader to the next node.

ReadString()

При переопределении в производном классе считывает содержимое узла элемента или текстового узла в виде строки.When overridden in a derived class, reads the contents of an element or text node as a string. Однако рекомендуем использовать вместо этого метод ReadElementContentAsString, предполагающий более простой способ обработки данной операции.However, we recommend that you use the ReadElementContentAsString method instead, because it provides a more straightforward way to handle this operation.

ReadSubtree()

Возвращает новый экземпляр XmlReader, который может использоваться для считывания текущего узла и всех его потомков.Returns a new XmlReader instance that can be used to read the current node, and all its descendants.

ReadToDescendant(String)

Переводит XmlReader к следующему сопоставленному элементу-потомку с указанным проверенным именем.Advances the XmlReader to the next descendant element with the specified qualified name.

ReadToDescendant(String, String)

Переводит XmlReader к следующему элементу-потомку с указанным локальным именем и URI пространства имен.Advances the XmlReader to the next descendant element with the specified local name and namespace URI.

ReadToFollowing(String)

Выполняет чтение до обнаружения элемента с указанным полным именем.Reads until an element with the specified qualified name is found.

ReadToFollowing(String, String)

Выполняет чтение до обнаружения указанных локального имени и URI пространства имен.Reads until an element with the specified local name and namespace URI is found.

ReadToNextSibling(String)

Переводит XmlReader к следующему сопоставленному родственному элементу с указанным проверенным именем.Advances the XmlReader to the next sibling element with the specified qualified name.

ReadToNextSibling(String, String)

Переводит XmlReader к следующему элементу того же уровня с указанным локальным именем и URI пространства имен.Advances the XmlReader to the next sibling element with the specified local name and namespace URI.

ReadValueChunk(Char[], Int32, Int32)

Считывает большие потоки текста, внедренного в XML-документ.Reads large streams of text embedded in an XML document.

ReadValueChunkAsync(Char[], Int32, Int32)

Асинхронно считывает большие потоки текста, внедренного в XML-документ.Asynchronously reads large streams of text embedded in an XML document.

ResolveEntity()

При переопределении в производном классе разрешает ссылки для сущностей для узлов EntityReference.When overridden in a derived class, resolves the entity reference for EntityReference nodes.

Skip()

Пропускает дочерний узел текущего узла.Skips the children of the current node.

SkipAsync()

Асинхронно пропускает дочерний узел текущего узла.Asynchronously skips the children of the current node.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Явные реализации интерфейса

IDisposable.Dispose()

Описание этого члена см. в разделе Dispose().For a description of this member, see Dispose().

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

Дополнительно