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

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

namespaceResolver
IXmlNamespaceResolver

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

Este valor pode ser null.

Retornos

O conteúdo de texto concatenado ou o valor do atributo convertido no 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 returnType valor é null.

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

- ou -

Um XmlReader método foi chamado antes de uma operação assíncrona anterior ser concluída. Nesse caso, InvalidOperationException é lançada com a mensagem "Uma operação assíncrona já está em andamento".

Ler 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 dataFile_2.xml arquivo 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 as referências de entidade 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ê tiver 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 chamada de ReadContentAs 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 de retorno Comportamento do leitor
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
Conteúdo concatenado de texto, CDATA, espaço em branco e nós de espaço em branco significativos convertidos no tipo solicitado. Move para o próximo elemento inicial ou marca de elemento final. As referências de entidade são expandidas automaticamente.
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 lê o conteúdo de texto concatenado que segue o PI ou o comentário. Move para o próximo elemento inicial ou marca de elemento final. As referências de entidade são expandidas automaticamente.
EndElement Uma cadeia de caracteres vazia. O leitor permanece na posição atual.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
Um InvalidOperationException é lançado. Indefinido, embora normalmente 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