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 un 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 la versión de .NET Framework 3.5, el valor del returnType parámetro ahora puede ser el DateTimeOffset tipo.
- namespaceResolver
- IXmlNamespaceResolver
Objeto IXmlNamespaceResolver que se usa para resolver los prefijos de espacio de nombres relacionados con la conversión de tipos. Por ejemplo, esto se puede usar al convertir un XmlQualifiedName objeto en un xs:string.
Este valor puede ser null.
Devoluciones
El contenido de texto concatenado o el valor de atributo convertido al tipo solicitado.
Excepciones
El contenido no tiene el formato correcto para el tipo de destino.
La conversión intentada no es válida.
El valor de returnType es null.
El nodo actual no es un tipo de nodo admitido. Consulte la tabla siguiente para obtener más información.
O bien
Se llamó a un XmlReader método antes de que finalice una operación asincrónica anterior. En este caso, InvalidOperationException se produce con el mensaje "Una operación asincrónica ya está en curso".
Lee 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 usa el dataFile_2.xml archivo 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>
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, los espacios en blanco significativos 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ómico 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 ReadContentAs llamada al método, los valores enteros se convierten 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 ReadContentAs llamada al 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 ReadContentAs llamada de 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 ReadContentAs llamada al método, se devuelve una matriz que contiene una cadena concatenada con el valor "123456789".
En la tabla siguiente se describe cómo este método trata cada tipo de nodo.
| XmlNodeType | Valor de retorno | Comportamiento del lector |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
Contenido concatenado de texto, CDATA, espacio en blanco y nodos de espacio en blanco significativos convertidos al tipo solicitado. | Se mueve a la siguiente etiqueta de elemento de inicio o elemento final. Las referencias de entidad se expanden automáticamente. |
Attribute |
Igual que llamar al XmlConvert.ToXxx valor del atributo. |
El lector permanece en la posición actual. |
CommentProcessingInstruction |
Omite la instrucción de procesamiento (PI) o el comentario y lee el contenido de texto concatenado que sigue al PI o comentario. | Se mueve a la siguiente etiqueta de elemento de inicio o elemento final. Las referencias de entidad se expanden automáticamente. |
EndElement |
Una cadena vacía. | El lector permanece en la posición actual. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
Se produce una InvalidOperationException excepción . | Sin definir, aunque normalmente el lector 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.