XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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.