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.

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

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

Исключения

Содержимое не соответствует правильному формату целевого типа.

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

Значение 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".

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

XmlNodeType Возвращаемое значение Поведение читателя
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

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

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

XmlDeclaration

None

Document

DocumentType

Notation

Entity

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

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

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

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