XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Lit le contenu en tant qu’objet du type spécifié.
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
Paramètres
- returnType
- Type
Type de la valeur à renvoyer.
Note Avec la version de .NET Framework 3.5, la valeur du returnType paramètre peut maintenant être le DateTimeOffset type.
- namespaceResolver
- IXmlNamespaceResolver
Objet IXmlNamespaceResolver utilisé pour résoudre les préfixes d’espace de noms liés à la conversion de type. Par exemple, cela peut être utilisé lors de la conversion d’un XmlQualifiedName objet en un xs:string.
Cette valeur peut être null.
Retours
Valeur de texte concaténée ou d’attribut convertie en type demandé.
Exceptions
Le contenu n’est pas au format correct pour le type cible.
La tentative de cast n’est pas valide.
La returnType valeur est null.
Le nœud actuel n’est pas un type de nœud pris en charge. Pour plus d’informations, consultez le tableau ci-dessous.
- ou -
Une XmlReader méthode a été appelée avant la fin d’une opération asynchrone précédente. Dans ce cas, InvalidOperationException est levée avec le message « Une opération asynchrone est déjà en cours ».
Lire Decimal.MaxValue.
Exemples
L’exemple suivant utilise la ReadContentAs méthode pour renvoyer le contenu de l’élément colors dans un tableau d’objets de chaîne.
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
L’exemple utilise le dataFile_2.xml fichier comme entrée.
<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>
Remarques
Cette méthode lit le contenu du texte à la position actuelle du lecteur et le convertit en type de retour demandé. Le texte, l’espace blanc, les espaces blancs significatifs et les sections CDATA sont concaténés. Les commentaires et les instructions de traitement sont ignorés et les références d’entité sont automatiquement résolues.
Cette méthode est utilisée pour lire, convertir si nécessaire et retourner des éléments de valeur atomique à partir du contenu du nœud actuel. Si le type d’entrée est un mappage valide pour le type du nœud actuel, une instance du type cible contenant la valeur du nœud actuel est retournée. Consultez la section Remarques dans la XmlReader page de référence pour obtenir la liste des mappages par défaut.
Par exemple, si vous aviez le texte XML suivant :
<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>
Si les données sont typées et qu’un tableau de chaînes est fourni à l’appel ReadContentAs de méthode, les valeurs entières sont converties à partir de chaînes en fonction de la liste des mappages de types CLR valides.
Si les données ne sont pas typées et qu’un tableau de chaînes est fourni à l’appel ReadContentAs de méthode, le contenu est analysé en chaînes distinctes. Un tableau contenant deux chaînes est retourné avec les valeurs « 123 » et « 456 ». Les espaces ne sont pas conservés du contenu.
En général, lors de la lecture de données non typées, le contenu est analysé en fonction du type fourni. Par exemple, si un tableau d’entiers est fourni à l’appel ReadContentAs de méthode, la chaîne est analysée dans un tableau d’entiers {123,456}.
Dans l’exemple suivant, le texte XML n’est pas séparé par des espaces
<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>
Si le contenu n’est pas typé et qu’un tableau de chaînes est fourni à l’appel ReadContentAs de méthode, un tableau contenant une chaîne concaténée est retourné avec la valeur « 123456789 ».
Le tableau suivant décrit comment cette méthode traite chaque type de nœud.
| XmlNodeType | Valeur renvoyée | Comportement du lecteur |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
Contenu concaténé de texte, CDATA, espace blanc et nœuds d’espace blanc significatifs convertis en type demandé. | Passe à l’élément de début ou à la balise d’élément de fin suivant. Les références d’entité sont automatiquement développées. |
Attribute |
Identique à l’appel XmlConvert.ToXxx de la valeur d’attribut. |
Le lecteur reste à la position actuelle. |
CommentProcessingInstruction |
Ignore l’instruction de traitement (PI) ou le commentaire et lit le contenu de texte concaténé qui suit le pi ou le commentaire. | Passe à l’élément de début ou à la balise d’élément de fin suivant. Les références d’entité sont automatiquement développées. |
EndElement |
Chaîne vide. | Le lecteur reste à la position actuelle. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
Une InvalidOperationException est levée. | Non défini, bien que le lecteur reste généralement dans la position actuelle. |
Pour plus d’informations, consultez la section Remarques de la XmlReader page de référence et la recommandation W3C XML Schema Part 2 : Datatypes .
Pour obtenir la version asynchrone de cette méthode, consultez ReadContentAsAsync.