Écriture de données typées
La classe XmlWriter permet d'écrire des données typées. La méthode WriteValue accepte les valeurs CLR (Common Language Runtime) de type simple. Ceci s'avère utile lorsqu'il s'agit de traiter des types simples CLR et une instance de l'objet XmlWriter. Vous pouvez appeler la méthode WriteValue pour écrire la valeur typée au lieu d'utiliser les méthodes de la classe XmlConvert pour convertir des données typées en une valeur de chaîne avant de l'écrire.
Écriture de valeurs typées
La méthode WriteValue utilise un objet CLR et convertit la valeur d'entrée au type de sortie souhaité à l'aide des règles de conversion de type de données de langage XSD (XML Schema Definition). Si l'objet CLR est un type de liste, comme IEnumerable, IList ou ICollection, il est traité comme un tableau du type de valeur.
Lors d'un appel à la méthode WriteValue, l'objet XmlWriter convertit la valeur en une représentation de chaîne en fonction des règles de type de données XSD (XML Schema Definition) et l'écrit à l'aide de la méthode WriteString.
Écriture sous la forme de texte
En cas d'appel à la méthode WriteValue, la valeur typée est sérialisée en texte à l'aide des règles XmlConvert adaptées à ce type de schéma.
Type de CLR |
Type de données XSD (XML Schema Definition) par défaut |
---|---|
System.Boolean |
xsd:boolean |
System.Byte** |
xsd:integer |
System.Byte[] |
xsd:base64Binary |
System.Char** |
xsd:string |
System.DateTime |
xsd:dateTime |
System.Decimal |
xsd:decimal |
System.Double |
xsd:double |
System.Int16** |
xsd:integer |
System.Int32 |
xsd:integer |
System.Int64 |
xsd:integer |
System.Single |
xsd:float |
System.String |
xsd:string |
System.IO.TextReader |
xsd:string |
System.IO.BinaryReader |
xsd:base64Binary |
**Ces types ne sont pas conformes CLS. Ils n'ont pas de méthode correspondante pour la classe XmlReader.
Remarque |
---|
Si la méthode WriteValue est appelée plusieurs fois de suite, les valeurs ne sont pas délimitées par un espace.Vous devez appeler la méthode WriteWhitespace entre les appels à la méthode WriteValue pour insérer un espace blanc. |
Écriture dans un magasin de données XML
L'objet XmlWriter permet d'écrire dans un magasin de données XML. Par exemple, la classe XPathNavigator peut créer un objet XmlWriter pour créer des nœuds pour un objet XmlDocument.
Si des informations de schéma sont disponibles pour un magasin de données, la méthode WriteValue lève une exception si l'appel à la méthode WriteValue essaie de convertir en un type qui n'est pas autorisé.
Si aucune information de schéma n'est disponible pour un magasin de données, la méthode WriteValue traite toutes les valeurs comme un type xsd:anySimpleType.
Exemple
L'exemple suivant augmente le prix du livre de 15 % avant de l'écrire. L'information de schéma provient du lecteur, qui est un objet XmlReader de validation.
reader.ReadToDescendant("price")
writer.WriteStartElement("price")
writer.WriteValue(reader.ReadElementContentAsDouble() * 1.15)
writer.WriteEndElement()
reader.ReadToDescendant("price");
writer.WriteStartElement("price");
writer.WriteValue((reader.ReadElementContentAsDouble()) * 1.15);
writer.WriteEndElement();