XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
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. |
CommentProcessingInstruction |
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. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
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.