XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.