Partilhar via


XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Método

Definição

Lê o conteúdo como um objeto do tipo especificado.

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

Parâmetros

returnType
Type

O tipo do valor a ser retornado.

Observação Com a versão do .NET Framework 3.5, o valor do parâmetro returnType agora pode ser do tipo DateTimeOffset.

namespaceResolver
IXmlNamespaceResolver

Um objeto IXmlNamespaceResolver que é usado para resolver todos os prefixos de namespace relacionados à conversão de tipo. Por exemplo, ele pode ser usado ao converter um objeto XmlQualifiedName em um xs:string.

Este valor pode ser null.

Retornos

Object

O valor de atributo ou conteúdo de texto concatenado convertido para o tipo solicitado.

Exceções

O conteúdo não está no formato correto para o tipo de destino.

A tentativa de conversão não é válida.

O valor returnType é null.

O nó atual não é um tipo de nó com suporte. Confira a tabela abaixo para obter detalhes.

- ou -

Um método XmlReader foi chamado antes do término de uma operação assíncrona anterior. Nesse caso, InvalidOperationException será gerado com a mensagem “Uma operação assíncrona já está em andamento”.

Leia o Decimal.MaxValue.

Exemplos

O exemplo a seguir usa o ReadContentAs método para retornar o conteúdo do elemento colors em uma matriz de objetos de cadeia de caracteres.

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

O exemplo usa o arquivo dataFile_2.xml como entrada.

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

Comentários

Esse método lê o conteúdo do texto na posição atual do leitor e o converte no tipo de retorno solicitado. Texto, o espaço em branco, o espaço em branco significativo e seções CDATA são concatenados. Comentários e instruções de processamento são ignorados e referências a entidades são resolvidas automaticamente.

Esse método é usado para ler, converter, se necessário, e retornar itens de valor atômico do conteúdo do nó atual. Se o tipo de entrada for um mapeamento válido para o tipo do nó atual, uma instância do tipo de destino que contém o valor do nó atual será retornada. Consulte a seção Comentários na XmlReader página de referência para obter uma lista dos mapeamentos padrão.

Por exemplo, se você tivesse o seguinte texto XML:

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

Se os dados forem digitados e uma matriz de cadeia de caracteres for fornecida para a ReadContentAs chamada de método, os valores inteiros serão convertidos de cadeias de caracteres de acordo com a lista de mapeamentos de tipo CLR válidos.

Se os dados não forem tipados e uma matriz de cadeia de caracteres for fornecida para a chamada de ReadContentAs método, o conteúdo será analisado em cadeias de caracteres separadas. Uma matriz que contém duas cadeias de caracteres é retornada com os valores "123" e "456". Os espaços não são preservados do conteúdo.

Em geral, ao ler dados não tipados, o conteúdo é analisado de acordo com o tipo fornecido. Por exemplo, se uma matriz de inteiros for fornecida para a chamada de ReadContentAs método, a cadeia de caracteres será analisada em uma matriz de inteiros {123,456}.

No exemplo a seguir, o texto XML não é separado por espaços

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

Se o conteúdo não for tipado e uma matriz de cadeia de caracteres for fornecida para a chamada de ReadContentAs método, uma matriz que contém uma cadeia de caracteres concatenada será retornada com o valor "123456789".

A tabela a seguir descreve como esse método trata cada tipo de nó.

XmlNodeType Valor retornado Comportamento do leitor
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
Concatenado conteúdo de texto, de CDATA, de espaço em branco e os nós significativos de espaço em branco convertidos para o tipo solicitado. Move para a seguir marca de início ou elemento de extremidade. Referências a entidades são automaticamente expandidas.
Attribute O mesmo que chamar XmlConvert.ToXxx no valor do atributo. O leitor permanece na posição atual.
Comment

ProcessingInstruction
Ignora a instrução de processamento (PI) ou o comentário e ler o conteúdo concatenado de texto que segue o PI ou o comentário. Move para a seguir marca de início ou elemento de extremidade. Referências a entidades são automaticamente expandidas.
EndElement Uma cadeia de caracteres vazia. O leitor permanece na posição atual.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
InvalidOperationException é lançada. Indefinido, embora geralmente o leitor permaneça na posição atual.

Para obter mais informações, consulte a seção Comentários da página de XmlReader referência e a recomendação W3C XML Schema Part 2: Datatypes .

Para obter a versão assíncrona deste método, consulte ReadContentAsAsync.

Aplica-se a