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);
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 devolver.

Nota Com o lançamento do .NET Framework 3.5, o valor do parâmetro returnType pode agora ser o tipo DateTimeOffset.

namespaceResolver
IXmlNamespaceResolver

Um objeto que é usado para resolver quaisquer prefixos de IXmlNamespaceResolver namespace relacionados com a conversão de tipos. Por exemplo, isto pode ser usado ao converter um XmlQualifiedName objeto para um xs:string.

Este valor pode ser null.

Devoluções

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

Exceções

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

A tentativa de lançamento não é válida.

O returnType valor é null.

O nó atual não é um tipo de nó suportado. Consulte a tabela abaixo para mais detalhes.

-ou-

Um XmlReader método era chamado antes de uma operação assíncrona anterior terminar. Neste caso, InvalidOperationException é lançado com a mensagem "Uma operação assíncrona já está em curso."

Leia Decimal.MaxValue.

Exemplos

O exemplo seguinte utiliza o ReadContentAs método para devolver o conteúdo do elemento colors a um array de objetos string.

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 dataFile_2.xml ficheiro 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>

Observações

Este método lê o conteúdo do texto na posição atual do leitor e converte-o para o tipo de retorno solicitado. Texto, espaço vazio, espaço vazio significativo e seções CDATA são juntados. Comentários e instruções de processamento são ignorados e as referências às entidades são automaticamente resolvidas.

Este método é usado para ler, converter se necessário e devolver itens de valor atómico do conteúdo atual do nó. Se o tipo de entrada for um mapeamento válido para o tipo do nó atual, então é devolvida uma instância do tipo alvo contendo o valor do nó atual. Consulte a secção de Observações na XmlReader página de referências para uma lista dos mapeamentos padrão.

Por exemplo, se tivesse o seguinte texto XML:

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

Se os dados forem tipados e um array de strings for fornecido à ReadContentAs chamada de método, então os valores inteiros são convertidos a partir das strings de acordo com a lista de mapeamentos válidos de tipos CLR.

Se os dados forem não tipados e um array de strings for fornecido à ReadContentAs chamada de método, então o conteúdo é analisado em strings separadas. Um array contendo duas cadeias é devolvido 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 um array inteiro for fornecido à ReadContentAs chamada do método, então a cadeia é analisada num array de inteiros {123,456}.

No exemplo seguinte, o texto XML não está separado por espaços

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

Se o conteúdo não for tipado e um array de strings for fornecido à ReadContentAs chamada do método, então um array contendo uma string concatenada é devolvido com o valor "123456789".

A tabela seguinte descreve como este método trata cada tipo de nó.

XmlNodeType Valor de retorno Comportamento do leitor
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
Conteúdo concatenado de texto, CDATA, espaços em branco e nós significativos de espaço em branco convertidos para o tipo solicitado. Move-se para o próximo elemento inicial ou etiqueta de elemento final. As referências de entidades são automaticamente expandidas.
Attribute É o mesmo que invocar XmlConvert.ToXxx o valor do atributo. O leitor mantém-se na posição atual.
Comment

ProcessingInstruction
Ignora a instrução de processamento (PI) ou comentário e lê o texto concatenado que segue o PI ou comentário. Move-se para o próximo elemento inicial ou etiqueta de elemento final. As referências de entidades são automaticamente expandidas.
EndElement Uma cadeia de caracteres vazia. O leitor mantém-se na posição atual.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
Um InvalidOperationException é jogado. Indefinido, embora normalmente o leitor permaneça na posição atual.

Para mais informações, consulte a secção Observações da XmlReader página de referência e a recomendação do Esquema XML do W3C Parte 2: Tipos de dados .

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

Aplica-se a