XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Метод

Определение

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

public:
 virtual System::Object ^ ReadContentAs(Type ^ returnType, System::Xml::IXmlNamespaceResolver ^ namespaceResolver);
public virtual object ReadContentAs (Type returnType, System.Xml.IXmlNamespaceResolver namespaceResolver);
abstract member ReadContentAs : Type * System.Xml.IXmlNamespaceResolver -> obj
override this.ReadContentAs : Type * System.Xml.IXmlNamespaceResolver -> obj
Public Overridable Function ReadContentAs (returnType As Type, namespaceResolver As IXmlNamespaceResolver) As Object

Параметры

returnType
Type

Тип возвращаемого значения.The type of the value to be returned.

Примечание. С выпуском платформы .NET Framework 3.5 значение параметра returnType может иметь тип DateTimeOffset.Note With the release of the .NET Framework 3.5, the value of the returnType parameter can now be the DateTimeOffset type.

namespaceResolver
IXmlNamespaceResolver

Объект IXmlNamespaceResolver, используемый для разрешения любых префиксов пространств имен, имеющих отношение к преобразованию типов.An IXmlNamespaceResolver object that is used to resolve any namespace prefixes related to type conversion. Например, этот объект можно использовать при преобразовании объекта XmlQualifiedName в xs:string.For example, this can be used when converting an XmlQualifiedName object to an xs:string.

Это значение может быть равно null.This value can be null.

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

Объединенное текстовое содержимое или значение атрибута, преобразованное в требуемый тип.The concatenated text content or attribute value converted to the requested type.

Исключения

Содержимое имеет неверный формат для типа целевого объекта.The content is not in the correct format for the target type.

Недопустимая попытка приведения.The attempted cast is not valid.

Значение returnType равно null.The returnType value is null.

Текущий узел не принадлежит к поддерживаемому типу узлов.The current node is not a supported node type. Дополнительные сведения приведены в таблице ниже.See the table below for details.

-или--or-

Метод XmlReader вызван перед завершением предыдущей асинхронной операции.An XmlReader method was called before a previous asynchronous operation finished. В этом случае возникает исключение InvalidOperationException с сообщением "Асинхронная операция уже выполняется".In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Чтение значения Decimal.MaxValue.Read Decimal.MaxValue.

Примеры

В следующем примере используется метод ReadContentAs для возврата содержимого элемента Colors в массив строковых объектов.The following example uses the ReadContentAs method to return the contents of the colors element into an array of string objects.

using (XmlReader reader = XmlReader.Create("dataFile_2.xml")) {
      reader.ReadToDescendant("item");

      reader.MoveToAttribute("colors");
      string[] colors = (string[]) reader.ReadContentAs(typeof(string[]),null);
      foreach (string color in colors) {
         Console.WriteLine("Colors: {0}", color);
      }             		
}
Using reader As XmlReader = XmlReader.Create("dataFile_2.xml")

  reader.ReadToDescendant("item")
              
  reader.MoveToAttribute("colors")
  Dim colors As String() = CType(reader.ReadContentAs(GetType(String()), Nothing), String())
  Dim color As String
  For Each color In  colors
    Console.WriteLine("Colors: {0}", color)
  Next color
          
End Using

В примере в качестве входных данных используется файл dataFile_2.xml.The example uses the dataFile_2.xml file as input.

<root>
  <item sale-item='true' productID='123456' colors='blue green black'>
    <price>9.95</price>
  </item>
  <item sale-item='false' productID='124390'>
    <price>5.95</price>
  </item>
  <item sale-item='true' productID='53298'>
    <price>12.95</price>
  </item>
</root>

Комментарии

Этот метод считывает текстовое содержимое в текущей позиции модуля чтения и преобразует его в запрошенный тип возвращаемого значения.This method reads the text content at the current reader position and converts it 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.

Этот метод используется для чтения, преобразования при необходимости и возврата элементов атомарных значений из содержимого текущего узла.This method is used to read, convert if necessary, and return atomic value items from the current node content. Если входной тип является допустимым сопоставлением для типа текущего узла, возвращается экземпляр целевого типа, содержащий значение текущего узла.If the input type is a valid mappings for the type of the current node then an instance of the target type containing the value of the current node is returned. Список сопоставлений по умолчанию см. в разделе "Примечания" на странице справочника по XmlReader.See the Remarks section in the XmlReader reference page for a list of the default mappings.

Например, если у вас есть следующий XML-текст:For example, if you had the following XML text:

<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>  

Если данные типизированы и в вызове метода ReadContentAs предоставлен массив строк, то целочисленные значения преобразуются из строк в соответствии со списком допустимых сопоставлений типов CLR.If the data is typed and a string array is supplied to the ReadContentAs method call, then the integer values are converted from strings according to the list of valid CLR type mappings.

Если данные не типизированы и в вызове метода ReadContentAs передается массив строк, содержимое разбивается на отдельные строки.If the data is untyped and a string array is supplied to the ReadContentAs method call, then the content is parsed into separate strings. Массив, содержащий две строки, возвращается со значениями "123" и "456".An array containing two strings is returned with the values "123" and "456". Пробелы не сохраняются в содержимом.The spaces are not preserved from the content.

Как правило, при чтении нетипизированных данных содержимое анализируется в соответствии с предоставленным типом.In general when reading untyped data the content is parsed according to the supplied type. Например, если для вызова метода ReadContentAs предоставляется целочисленный массив, строка разбивается в массив целых чисел {123,456}.For example, if an integer array is supplied to the ReadContentAs method call then the string is parsed into an array of integers {123,456}.

В следующем примере текст XML не отделяется пробелами.In the following example the XML text is not separated by spaces

<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>  

Если содержимое не типизировано и в вызове метода ReadContentAs передается массив строк, то возвращается массив, содержащий одну объединенную строку со значением "123456789".If the content is untyped and a string array is supplied to the ReadContentAs method call then an array containing one concatenated string is returned with the value "123456789".

В следующей таблице описано, как этот метод обрабатывает каждый тип узла.The following table describes how this method treats each node type.

Тип узла XMLXmlNodeType Возвращаемое значениеReturn value Поведение модуля чтенияReader behavior
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
Объединенное содержимое узлов текста, CDATA, пробелов и значимых пробелов, преобразованное в необходимый тип.Concatenated content of text, CDATA, white space and significant white space nodes converted to the requested type. Перемещается к следующему тегу начального или конечного элемента.Moves to the next start element or end element tag. Ссылки на сущности автоматически раскрываются.Entity references are automatically expanded.
Attribute Аналогично вызову XmlConvert.ToXxx для значения атрибута.Same as calling XmlConvert.ToXxx on the attribute value. Средство чтения остается в текущей позиции.The reader remains in the current position.
Comment

ProcessingInstruction
Пропускает инструкцию по обработке или комментарий и считывает объединенное текстовое содержимое, следующее за инструкцией по обработке или комментарием.Ignores the processing instruction (PI) or comment and reads the concatenated text content that follows the PI or comment. Перемещается к следующему тегу начального или конечного элемента.Moves to the next start element or end element tag. Ссылки на сущности автоматически раскрываются.Entity references are automatically expanded.
EndElement Пустая строка.An empty string. Средство чтения остается в текущей позиции.The reader remains in the current position.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
Возникает исключение InvalidOperationException.An InvalidOperationException is thrown. Не определено, хотя обычно модуль чтения остается в текущей позиции.Undefined, although typically the reader remains in the current position.

Дополнительные сведения см. в подразделе "Примечания" на странице справочника по XmlReader и рекомендации консорциума W3C по схеме XML, часть 2: типы данных.For more information, see the Remarks section of the XmlReader reference page and the W3C XML Schema Part 2: Datatypes recommendation.

Асинхронную версию этого метода см. в разделе ReadContentAsAsync.For the asynchronous version of this method, see ReadContentAsAsync.

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