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

Определение

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

public:
 virtual System::Object ^ ReadContentAs(Type ^ returnType, System::Xml::IXmlNamespaceResolver ^ namespaceResolver);
public virtual 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

Тип возвращаемого значения.

Примечание. С выпуском платформы .NET Framework 3.5 значение параметра returnType может иметь тип DateTimeOffset.

namespaceResolver
IXmlNamespaceResolver

Объект IXmlNamespaceResolver, используемый для разрешения любых префиксов пространств имен, имеющих отношение к преобразованию типов. Например, этот объект можно использовать при преобразовании объекта XmlQualifiedName в xs:string.

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

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

Object

Объединенное текстовое содержимое или значение атрибута, преобразованное в требуемый тип.

Исключения

Содержимое имеет неверный формат для типа целевого объекта.

Недопустимая попытка приведения.

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

Текущий узел не принадлежит к поддерживаемому типу узлов. Дополнительные сведения приведены в таблице ниже.

-или-

Метод XmlReader вызван перед завершением предыдущей асинхронной операции. В этом случае возникает исключение InvalidOperationException с сообщением "Асинхронная операция уже выполняется".

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

Примеры

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

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.

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

Комментарии

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

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

Например, если у вас есть следующий XML-текст:

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

Если данные типизуются и массив строк передается ReadContentAs в вызов метода, целочисленные значения преобразуются из строк в соответствии со списком допустимых сопоставлений типов CLR.

Если данные нетипичены и строковый массив предоставляется ReadContentAs в вызов метода, содержимое анализируется в отдельные строки. Массив, содержащий две строки, возвращается со значениями "123" и "456". Пробелы не сохраняются из содержимого.

Как правило, при чтении нетипизированных данных содержимое анализируется в соответствии с указанным типом. Например, если вызов метода предоставляет ReadContentAs целочисленный массив, строка анализируется в массив целых чисел {123,456}.

В следующем примере XML-текст не отделяется пробелами

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

Если содержимое нетипично, а строковый массив предоставляется вызову ReadContentAs метода, массив, содержащий одну сцепленную строку, возвращается со значением "123456789".

В следующей таблице описывается, как этот метод обрабатывает каждый тип узла.

Тип узла XML Возвращаемое значение Поведение модуля чтения
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
Объединенное содержимое узлов текста, CDATA, пробелов и значимых пробелов, преобразованное в необходимый тип. Перемещается к следующему тегу начального или конечного элемента. Ссылки на сущности автоматически раскрываются.
Attribute Аналогично вызову XmlConvert.ToXxx значения атрибута. Средство чтения остается в текущей позиции.
Comment

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

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
Возникает исключение InvalidOperationException. Не определено, хотя обычно модуль чтения остается в текущей позиции.

Дополнительные сведения см. в разделе "Примечания" эталонной XmlReader страницы и рекомендации по xml-схеме W3C, часть 2. Рекомендации по типам данных .

Асинхронная версия этого метода см. в разделе ReadContentAsAsync.

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