XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Método

Definición

Lee el contenido como objeto del 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

Tipo del valor que se va a devolver.

Nota Con el lanzamiento de .NET Framework 3.5, el valor del parámetro returnType ahora puede ser el tipo DateTimeOffset.

namespaceResolver
IXmlNamespaceResolver

Objeto IXmlNamespaceResolver que se utiliza para resolver prefijos de espacios de nombres relacionados con la conversión de tipos. Por ejemplo, se puede utilizar al convertir un objeto XmlQualifiedName en xs:string.

Este valor puede ser null.

Devoluciones

Object

Contenido de texto concatenado o valor de atributo convertido en el tipo solicitado.

Excepciones

El formato del contenido no es correcto para el tipo de destino.

La conversión intentada no es válida.

El valor returnType es null.

El nodo actual no es un tipo de nodo compatible. Vea la siguiente tabla para obtener información detallada.

o bien

Se llamó un método XmlReader antes de que se termine una operación asincrónica anterior. En este caso, se genera InvalidOperationException con el mensaje “Ya hay una operación asincrónica en curso”.

Lea Decimal.MaxValue.

Ejemplos

En el ejemplo siguiente se usa el ReadContentAs método para devolver el contenido del elemento colors en una matriz de objetos de cadena.

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

En el ejemplo se utiliza como entrada el archivo dataFile_2.xml.

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

Comentarios

Este método lee el contenido de texto en la posición del lector actual y lo convierte en el tipo de valor devuelto solicitado. El texto, el espacio en blanco, el espacio en blanco significativo y las secciones CDATA se concatenan. Los comentarios y las instrucciones de procesamiento se omiten y las referencias de entidad se resuelven automáticamente.

Este método se usa para leer, convertir si es necesario y devolver elementos de valor atómicos del contenido del nodo actual. Si el tipo de entrada es una asignación válida para el tipo del nodo actual, se devuelve una instancia del tipo de destino que contiene el valor del nodo actual. Consulte la sección Comentarios de la XmlReader página de referencia para obtener una lista de las asignaciones predeterminadas.

Por ejemplo, si tenía el siguiente texto XML:

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

Si los datos se escriben y se proporciona una matriz de cadenas a la llamada al ReadContentAs método, los valores enteros se convierten a partir de cadenas según la lista de asignaciones de tipos CLR válidas.

Si los datos no están con tipo y se proporciona una matriz de cadenas a la llamada al ReadContentAs método, el contenido se analiza en cadenas independientes. Se devuelve una matriz que contiene dos cadenas con los valores "123" y "456". Los espacios no se conservan del contenido.

En general, al leer datos sin tipo, el contenido se analiza según el tipo proporcionado. Por ejemplo, si se proporciona una matriz de enteros a la llamada al ReadContentAs método, la cadena se analiza en una matriz de enteros {123,456}.

En el ejemplo siguiente, el texto XML no está separado por espacios

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

Si el contenido no está escrito y se proporciona una matriz de cadenas a la llamada al ReadContentAs método, se devuelve una matriz que contiene una cadena concatenada con el valor "123456789".

En la tabla siguiente se describe cómo trata este método cada tipo de nodo.

Tipo XmlNode Valor devuelto Comportamiento del sistema de lectura
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
El contenido concatenado de los nodos de texto, CDATA, espacio en blanco y espacio en blanco significativo se convierten en el tipo solicitado. Se mueve a la siguiente etiqueta del elemento de inicio o de fin. Las referencias de entidad se expanden automáticamente.
Attribute Igual que llamar al XmlConvert.ToXxx valor del atributo. El sistema de lectura permanece en la posición actual.
Comment

ProcessingInstruction
Omite la instrucción de procesamiento o los comentarios y lee el contenido del texto concatenado que sigue a la instrucción de procesamiento o los comentarios. Se mueve a la siguiente etiqueta del elemento de inicio o de fin. Las referencias de entidad se expanden automáticamente.
EndElement Una cadena vacía. El sistema de lectura permanece en la posición actual.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
Se inicia una InvalidOperationException. No definido, aunque normalmente el sistema de lectura permanece en la posición actual.

Para obtener más información, vea la sección Comentarios de la XmlReader página de referencia y la recomendación esquema XML de W3C Parte 2: Tipos de datos .

Para obtener la versión asincrónica de este método, vea ReadContentAsAsync.

Se aplica a