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 | Возвращаемое значение | Поведение читателя |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
Сцепленное содержимое текста, CDATA, пробелов и значительных узлов пробелов, преобразованных в запрошенный тип. | Перемещается к следующему начальном элементу или тегу конечного элемента. Ссылки на сущности автоматически расширяются. |
Attribute |
Аналогично вызову XmlConvert.ToXxx значения атрибута. |
Средство чтения остается в текущей позиции. |
CommentProcessingInstruction |
Игнорирует инструкцию обработки (PI) или комментарий и считывает сцепленное текстовое содержимое, следующее за идентификатором или комментарием. | Перемещается к следующему начальном элементу или тегу конечного элемента. Ссылки на сущности автоматически расширяются. |
EndElement |
Пустая строка. | Средство чтения остается в текущей позиции. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
Вызывается InvalidOperationException . | Не определено, хотя обычно читатель остается в текущей позиции. |
Дополнительные сведения см. в разделе "Примечания" эталонной XmlReader страницы и рекомендации по xml-схеме W3C 2.
Сведения об асинхронной версии этого метода см. в разделе ReadContentAsAsync.