Classe System.Xml.XmlConvert

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

La classe XmlConvert a un fonctionnement équivalent à celui de la classe Convert, mais elle prend en charge les normes XML. Le système de type est fondé sur le type de schéma en langage XSD (XML Schema Definition), et les valeurs de retour sont toujours indépendantes des paramètres régionaux.

Encodage et décodage

Les noms d’éléments et d’attributs ou les valeurs d’ID sont limités à une plage de caractères XML, en fonction de la recommandation XML 1.0 W3C. Lorsque des noms contiennent des caractères invalides, vous pouvez utiliser les méthodes EncodeName et DecodeName de cette classe pour les traduire en noms XML valides.

Par exemple, si vous souhaitez utiliser l’en-tête de colonne « Order Detail » dans une base de données, la base de données autorise l’espace entre les deux mots. En XML, l’espace entre « Order » et « Detail » est toutefois considéré comme un caractère XML non valide. Vous devez le convertir en un encodage hexadécimal d’échappement et le décoder ultérieurement.

Vous pouvez utiliser la méthode EncodeName avec la classe XmlWriter pour vous assurer que les noms écrits sont des noms XML valides. Le code C# suivant convertit le nom « Order Detail » en un nom XML valide et écrit l’élément <Order_0x0020_Detail>My order</Order_0x0020_Detail>.

writer.WriteElementString(XmlConvert.EncodeName("Order Detail"),"My order");

Les méthodes XmlConvert suivantes effectuent l’encodage et le décodage.

Méthode Description
EncodeName Prend un nom et retourne le nom encodé, avec tout caractère non valide remplacé par une chaîne d’échappement. Cette méthode permet l’utilisation de deux-points dans n’importe quelle position. C’est pourquoi il se peut que le nom demeure non valide par rapport aux espaces de nom W3C dans la recommandation XML 1.0.
EncodeNmToken Prend un nom et retourne le nom encodé.
EncodeLocalName Identique à EncodeName, sauf qu’il encode également le caractère deux-points, garantissant que le nom peut être utilisé comme la partie LocalName d’un nom qualifié d’espace de noms.
DecodeName Inverse la transformation réalisée par toutes les méthodes d'encodage.

Validation du nom

La classe XmlConvert contient deux méthodes qui vérifient les caractères dans le nom d’un élément ou d’un attribut et s’assurent de la conformité du nom aux règles définies par la recommandation XML 1.0 W3C :

  • VerifyName vérifie les caractères et s’assure de la validité du nom. La méthode retourne le nom, s’il est valide, sinon elle lève une exception.
  • VerifyNCName effectue la même validation, mais accepte des noms non qualifiés.

Le XmlConvert contient des méthodes supplémentaires qui valident les jetons, les espaces blancs, les ID publics et d’autres chaînes.

Conversion de types de données

XmlConvert fournit également des méthodes vous permettant de convertir des données d’une chaîne en un type de données fortement typé. Par exemple, la méthode ToDateTime convertit une chaîne en son équivalent DateTime. Cela est utile, car la plupart des méthodes de la classe XmlReader retournent des données sous forme de chaîne. Une fois les données lues, elles peuvent être converties dans le type de données approprié avant d’être utilisées. Les surcharges ToString fournissent l’opération complémentaire en convertissant des données fortement typées en chaînes. Cela est par exemple utile lorsque vous souhaitez ajouter les données aux zones de texte d’une page web. Les paramètres locaux ne sont pas pris en compte lors de la conversion des données. Les types de données sont basés sur les types de données du Schema XML (XSD).