XmlReader XmlReader XmlReader XmlReader Class

Определение

Предоставляет средство чтения, обеспечивающее быстрый прямой доступ (без кэширования) к данным 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
Наследование
XmlReaderXmlReaderXmlReaderXmlReader
Производный
Реализации

Примеры

В следующем примере кода показано, как использовать асинхронный интерфейс 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) 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:

Создание средства чтения XML Creating an XML reader
Проверка XML-данных Validating 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

Используйте Create метод для создания XmlReader экземпляра.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.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 Recommendation.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 Schema Part 1: Структуры и W3C XML Schema Part 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.

Можно проверить данные по встроенной схеме XSD, DTD или 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 Reduced (XDR).XmlReader doesn't support XML-Data Reduced (XDR) schema validation.

Используйте следующие параметры на XmlReaderSettings класс, чтобы указать тип проверки, в том случае, если таковые имеются, XmlReader экземпляра поддерживает.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 или схемы).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 Recommendation.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 Characters разделе рекомендаций консорциума 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.

Используйте этот XmlReaderSettings методUse 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 Recommendation определения открывающие теги, end и теги пустой элемент.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

Чтение XML-атрибутыReading 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

Считывание атрибутов в XML-объявление узловReading 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] свойство может использоваться для возврата значения для литералов SYSTEM и PUBLIC.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.

  • ReadContentAs методы считывают текстовое содержимое в текущей позиции средства чтения и если 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 Schema Part 2: Типы данных рекомендации.The XmlReader class uses the rules defined by the W3C XML Schema Part 2: Datatypes recommendation.

Используйте этот XmlReader методUse 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 Тип, указанный с помощью returnType параметрThe 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, метод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

Метод ReadEndElementReadEndElement 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

Метод ReadToNextSiblingReadToNextSibling 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

Метод ReadToFollowingReadToFollowing 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

Метод ReadToDescendantReadToDescendant 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() XmlReader() XmlReader()

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

Свойства

AttributeCount AttributeCount AttributeCount AttributeCount

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

BaseURI BaseURI BaseURI BaseURI

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

CanReadBinaryContent CanReadBinaryContent CanReadBinaryContent CanReadBinaryContent

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

CanReadValueChunk CanReadValueChunk CanReadValueChunk CanReadValueChunk

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

CanResolveEntity CanResolveEntity CanResolveEntity CanResolveEntity

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

Depth Depth Depth Depth

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

EOF EOF EOF EOF

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

HasAttributes HasAttributes HasAttributes HasAttributes

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

HasValue HasValue HasValue HasValue

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

IsDefault IsDefault IsDefault 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 IsEmptyElement IsEmptyElement 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] Item[Int32] Item[Int32] Item[Int32]

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

Item[String, String] Item[String, String] Item[String, String] 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] Item[String] Item[String] Item[String]

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

LocalName LocalName LocalName LocalName

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

Name Name Name Name

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

NamespaceURI NamespaceURI NamespaceURI 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 NameTable NameTable NameTable

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

NodeType NodeType NodeType NodeType

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

Prefix Prefix Prefix Prefix

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

QuoteChar QuoteChar QuoteChar QuoteChar

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

ReadState ReadState ReadState ReadState

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

SchemaInfo SchemaInfo SchemaInfo SchemaInfo

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

Settings Settings Settings Settings

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

Value Value Value Value

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

ValueType ValueType ValueType ValueType

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

XmlLang XmlLang XmlLang XmlLang

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

XmlSpace XmlSpace XmlSpace XmlSpace

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

Методы

Close() Close() Close() Close()

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

Create(Stream) Create(Stream) Create(Stream) Create(Stream)

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

Create(Stream, XmlReaderSettings) Create(Stream, XmlReaderSettings) Create(Stream, XmlReaderSettings) Create(Stream, XmlReaderSettings)

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

Create(Stream, XmlReaderSettings, String) Create(Stream, XmlReaderSettings, String) Create(Stream, XmlReaderSettings, String) Create(Stream, XmlReaderSettings, String)

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

Create(Stream, XmlReaderSettings, XmlParserContext) Create(Stream, XmlReaderSettings, XmlParserContext) Create(Stream, XmlReaderSettings, XmlParserContext) Create(Stream, XmlReaderSettings, XmlParserContext)

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

Create(String) Create(String) Create(String) Create(String)

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

Create(String, XmlReaderSettings) Create(String, XmlReaderSettings) Create(String, XmlReaderSettings) Create(String, XmlReaderSettings)

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

Create(String, XmlReaderSettings, XmlParserContext) Create(String, XmlReaderSettings, XmlParserContext) Create(String, XmlReaderSettings, XmlParserContext) Create(String, XmlReaderSettings, XmlParserContext)

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

Create(TextReader) Create(TextReader) Create(TextReader) Create(TextReader)

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

Create(TextReader, XmlReaderSettings) Create(TextReader, XmlReaderSettings) Create(TextReader, XmlReaderSettings) Create(TextReader, XmlReaderSettings)

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

Create(TextReader, XmlReaderSettings, String) Create(TextReader, XmlReaderSettings, String) Create(TextReader, XmlReaderSettings, String) 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) Create(TextReader, XmlReaderSettings, XmlParserContext) Create(TextReader, XmlReaderSettings, XmlParserContext) 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) Create(XmlReader, XmlReaderSettings) Create(XmlReader, XmlReaderSettings) Create(XmlReader, XmlReaderSettings)

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

Dispose() Dispose() Dispose() Dispose()

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

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

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

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

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

(Inherited from Object)
GetAttribute(Int32) GetAttribute(Int32) GetAttribute(Int32) GetAttribute(Int32)

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

GetAttribute(String) GetAttribute(String) GetAttribute(String) GetAttribute(String)

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

GetAttribute(String, String) GetAttribute(String, String) GetAttribute(String, String) GetAttribute(String, String)

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

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

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

(Inherited from Object)
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
GetValueAsync() GetValueAsync() GetValueAsync() GetValueAsync()

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

IsName(String) IsName(String) IsName(String) IsName(String)

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

IsNameToken(String) IsNameToken(String) IsNameToken(String) IsNameToken(String)

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

IsStartElement() IsStartElement() IsStartElement() IsStartElement()

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

IsStartElement(String) IsStartElement(String) IsStartElement(String) 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) IsStartElement(String, String) IsStartElement(String, String) 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) LookupNamespace(String) LookupNamespace(String) LookupNamespace(String)

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

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

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

(Inherited from Object)
MoveToAttribute(Int32) MoveToAttribute(Int32) MoveToAttribute(Int32) MoveToAttribute(Int32)

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

MoveToAttribute(String) MoveToAttribute(String) MoveToAttribute(String) MoveToAttribute(String)

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

MoveToAttribute(String, String) MoveToAttribute(String, String) MoveToAttribute(String, String) MoveToAttribute(String, String)

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

MoveToContent() MoveToContent() MoveToContent() 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() MoveToContentAsync() MoveToContentAsync() 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() MoveToElement() MoveToElement() MoveToElement()

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

MoveToFirstAttribute() MoveToFirstAttribute() MoveToFirstAttribute() MoveToFirstAttribute()

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

MoveToNextAttribute() MoveToNextAttribute() MoveToNextAttribute() MoveToNextAttribute()

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

Read() Read() Read() Read()

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

ReadAsync() ReadAsync() ReadAsync() ReadAsync()

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

ReadAttributeValue() ReadAttributeValue() ReadAttributeValue() 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) ReadContentAs(Type, IXmlNamespaceResolver) ReadContentAs(Type, IXmlNamespaceResolver) ReadContentAs(Type, IXmlNamespaceResolver)

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

ReadContentAsAsync(Type, IXmlNamespaceResolver) ReadContentAsAsync(Type, IXmlNamespaceResolver) ReadContentAsAsync(Type, IXmlNamespaceResolver) ReadContentAsAsync(Type, IXmlNamespaceResolver)

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

ReadContentAsBase64(Byte[], Int32, Int32) ReadContentAsBase64(Byte[], Int32, Int32) ReadContentAsBase64(Byte[], Int32, Int32) ReadContentAsBase64(Byte[], Int32, Int32)

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

ReadContentAsBase64Async(Byte[], Int32, Int32) ReadContentAsBase64Async(Byte[], Int32, Int32) ReadContentAsBase64Async(Byte[], Int32, Int32) ReadContentAsBase64Async(Byte[], Int32, Int32)

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

ReadContentAsBinHex(Byte[], Int32, Int32) ReadContentAsBinHex(Byte[], Int32, Int32) ReadContentAsBinHex(Byte[], Int32, Int32) ReadContentAsBinHex(Byte[], Int32, Int32)

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

ReadContentAsBinHexAsync(Byte[], Int32, Int32) ReadContentAsBinHexAsync(Byte[], Int32, Int32) ReadContentAsBinHexAsync(Byte[], Int32, Int32) ReadContentAsBinHexAsync(Byte[], Int32, Int32)

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

ReadContentAsBoolean() ReadContentAsBoolean() ReadContentAsBoolean() ReadContentAsBoolean()

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

ReadContentAsDateTime() ReadContentAsDateTime() ReadContentAsDateTime() ReadContentAsDateTime()

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

ReadContentAsDateTimeOffset() ReadContentAsDateTimeOffset() ReadContentAsDateTimeOffset() ReadContentAsDateTimeOffset()

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

ReadContentAsDecimal() ReadContentAsDecimal() ReadContentAsDecimal() ReadContentAsDecimal()

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

ReadContentAsDouble() ReadContentAsDouble() ReadContentAsDouble() ReadContentAsDouble()

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

ReadContentAsFloat() ReadContentAsFloat() ReadContentAsFloat() ReadContentAsFloat()

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

ReadContentAsInt() ReadContentAsInt() ReadContentAsInt() ReadContentAsInt()

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

ReadContentAsLong() ReadContentAsLong() ReadContentAsLong() ReadContentAsLong()

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

ReadContentAsObject() ReadContentAsObject() ReadContentAsObject() ReadContentAsObject()

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

ReadContentAsObjectAsync() ReadContentAsObjectAsync() ReadContentAsObjectAsync() ReadContentAsObjectAsync()

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

ReadContentAsString() ReadContentAsString() ReadContentAsString() ReadContentAsString()

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

ReadContentAsStringAsync() ReadContentAsStringAsync() ReadContentAsStringAsync() ReadContentAsStringAsync()

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

ReadElementContentAs(Type, IXmlNamespaceResolver) ReadElementContentAs(Type, IXmlNamespaceResolver) ReadElementContentAs(Type, IXmlNamespaceResolver) ReadElementContentAs(Type, IXmlNamespaceResolver)

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

ReadElementContentAs(Type, IXmlNamespaceResolver, String, String) ReadElementContentAs(Type, IXmlNamespaceResolver, String, String) ReadElementContentAs(Type, IXmlNamespaceResolver, String, String) 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) ReadElementContentAsAsync(Type, IXmlNamespaceResolver) ReadElementContentAsAsync(Type, IXmlNamespaceResolver) ReadElementContentAsAsync(Type, IXmlNamespaceResolver)

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

ReadElementContentAsBase64(Byte[], Int32, Int32) ReadElementContentAsBase64(Byte[], Int32, Int32) ReadElementContentAsBase64(Byte[], Int32, Int32) ReadElementContentAsBase64(Byte[], Int32, Int32)

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

ReadElementContentAsBase64Async(Byte[], Int32, Int32) ReadElementContentAsBase64Async(Byte[], Int32, Int32) ReadElementContentAsBase64Async(Byte[], Int32, Int32) ReadElementContentAsBase64Async(Byte[], Int32, Int32)

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

ReadElementContentAsBinHex(Byte[], Int32, Int32) ReadElementContentAsBinHex(Byte[], Int32, Int32) ReadElementContentAsBinHex(Byte[], Int32, Int32) ReadElementContentAsBinHex(Byte[], Int32, Int32)

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

ReadElementContentAsBinHexAsync(Byte[], Int32, Int32) ReadElementContentAsBinHexAsync(Byte[], Int32, Int32) ReadElementContentAsBinHexAsync(Byte[], Int32, Int32) ReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

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

ReadElementContentAsBoolean() ReadElementContentAsBoolean() ReadElementContentAsBoolean() ReadElementContentAsBoolean()

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

ReadElementContentAsBoolean(String, String) ReadElementContentAsBoolean(String, String) ReadElementContentAsBoolean(String, String) 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() ReadElementContentAsDateTime() ReadElementContentAsDateTime() ReadElementContentAsDateTime()

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

ReadElementContentAsDateTime(String, String) ReadElementContentAsDateTime(String, String) ReadElementContentAsDateTime(String, String) 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() ReadElementContentAsDecimal() ReadElementContentAsDecimal() ReadElementContentAsDecimal()

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

ReadElementContentAsDecimal(String, String) ReadElementContentAsDecimal(String, String) ReadElementContentAsDecimal(String, String) 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() ReadElementContentAsDouble() ReadElementContentAsDouble() ReadElementContentAsDouble()

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

ReadElementContentAsDouble(String, String) ReadElementContentAsDouble(String, String) ReadElementContentAsDouble(String, String) 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() ReadElementContentAsFloat() ReadElementContentAsFloat() ReadElementContentAsFloat()

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

ReadElementContentAsFloat(String, String) ReadElementContentAsFloat(String, String) ReadElementContentAsFloat(String, String) 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() ReadElementContentAsInt() ReadElementContentAsInt() ReadElementContentAsInt()

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

ReadElementContentAsInt(String, String) ReadElementContentAsInt(String, String) ReadElementContentAsInt(String, String) 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() ReadElementContentAsLong() ReadElementContentAsLong() ReadElementContentAsLong()

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

ReadElementContentAsLong(String, String) ReadElementContentAsLong(String, String) ReadElementContentAsLong(String, String) 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() ReadElementContentAsObject() ReadElementContentAsObject() ReadElementContentAsObject()

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

ReadElementContentAsObject(String, String) ReadElementContentAsObject(String, String) ReadElementContentAsObject(String, String) 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() ReadElementContentAsObjectAsync() ReadElementContentAsObjectAsync() ReadElementContentAsObjectAsync()

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

ReadElementContentAsString() ReadElementContentAsString() ReadElementContentAsString() ReadElementContentAsString()

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

ReadElementContentAsString(String, String) ReadElementContentAsString(String, String) ReadElementContentAsString(String, String) 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() ReadElementContentAsStringAsync() ReadElementContentAsStringAsync() ReadElementContentAsStringAsync()

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

ReadElementString() ReadElementString() ReadElementString() 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) ReadElementString(String) ReadElementString(String) 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) ReadElementString(String, String) ReadElementString(String, String) 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() ReadEndElement() ReadEndElement() ReadEndElement()

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

ReadInnerXml() ReadInnerXml() ReadInnerXml() ReadInnerXml()

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

ReadInnerXmlAsync() ReadInnerXmlAsync() ReadInnerXmlAsync() ReadInnerXmlAsync()

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

ReadOuterXml() ReadOuterXml() ReadOuterXml() ReadOuterXml()

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

ReadOuterXmlAsync() ReadOuterXmlAsync() ReadOuterXmlAsync() ReadOuterXmlAsync()

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

ReadStartElement() ReadStartElement() ReadStartElement() ReadStartElement()

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

ReadStartElement(String) ReadStartElement(String) ReadStartElement(String) 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) ReadStartElement(String, String) ReadStartElement(String, String) 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() ReadString() ReadString() 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() ReadSubtree() ReadSubtree() ReadSubtree()

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

ReadToDescendant(String) ReadToDescendant(String) ReadToDescendant(String) ReadToDescendant(String)

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

ReadToDescendant(String, String) ReadToDescendant(String, String) ReadToDescendant(String, String) ReadToDescendant(String, String)

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

ReadToFollowing(String) ReadToFollowing(String) ReadToFollowing(String) ReadToFollowing(String)

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

ReadToFollowing(String, String) ReadToFollowing(String, String) ReadToFollowing(String, String) ReadToFollowing(String, String)

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

ReadToNextSibling(String) ReadToNextSibling(String) ReadToNextSibling(String) ReadToNextSibling(String)

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

ReadToNextSibling(String, String) ReadToNextSibling(String, String) ReadToNextSibling(String, String) 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) ReadValueChunk(Char[], Int32, Int32) ReadValueChunk(Char[], Int32, Int32) ReadValueChunk(Char[], Int32, Int32)

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

ReadValueChunkAsync(Char[], Int32, Int32) ReadValueChunkAsync(Char[], Int32, Int32) ReadValueChunkAsync(Char[], Int32, Int32) ReadValueChunkAsync(Char[], Int32, Int32)

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

ResolveEntity() ResolveEntity() ResolveEntity() ResolveEntity()

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

Skip() Skip() Skip() Skip()

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

SkipAsync() SkipAsync() SkipAsync() SkipAsync()

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

ToString() ToString() ToString() ToString()

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

(Inherited from Object)

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

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

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

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

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