À propos des Schema Wrapper Libraries (C#)
Le mappage par défaut des types Schéma XML dans les types de données C# est le suivant.
Schéma XML | C# | Remarques |
---|---|---|
xs:string | string | |
xs:boolean | bool | |
xs:decimal | decimal | xs:decimal dispose une plage et une précision illimitée, mappé vers les décimales pour des raisons d’efficacité. |
xs:float, xs:double | double | |
xs:long | long | |
xs:unsignedLong | ulong | |
xs:int | int | |
xs:unsignedInt | uint | |
xs:dateTime, date, time, gYearMonth, gYear, gMonthDay, gDay, gMonth | ||
xs:duration | ||
xs:hexBinary and xs:base64Binary | byte[] | L’encodage et le décodage des données binaires est effectué automatiquement. |
xs:anySimpleType | string |
Tous les types de Schéma XML qui ne sont pas contenus dans la liste sont des types dérivés, et mappés sur le même C# que leur type de base respectif.
Classes générées
Pour chaque type dans le schéma, une classe est générée qui contient un membre pour chaque attribut et élément du type. Les membres sont nommés comme les attributs ou éléments dans le schéma original (en cas d’une collision éventuelle, un nombre est ajouté). Pour les types simples, des opérateurs d’attribution et de conversion sont générés. Pour des types simples avec des facettes d’énumération, les méthodes GetEnumerationValue() et SetEnumerationValue(int) peuvent être utilisés ensemble avec des constantes générées pour chaque valeur d’énumération. De plus, la méthode StaticInfo() permet l’accès à l’information de schéma en tant qu’un des types suivants :
Les classes générées depuis des types complexes comprennent la méthode SetXsiType(), qui vous permet de définir l’attribut xsi:type du type. Cette méthode est utile si vous souhaitez créer des éléments d’instance XML d’un type dérivé.
Outre les classes pour les types déclarés dans le schéma XML, une classe de document (identifiée par "Doc", voir ci-dessous) est générée. Elle contient tous les éléments root possibles, en tant que membres, ainsi que plusieurs autres méthodes. Pour plus d’informations concernant la classe, voir [YourSchema].[Doc].
Note: Le véritable nom de la classe dépend du nom du schéma .xsd.
Pour chaque attribut ou élément membre d’un type de schéma, une nouvelle classe est générée. Pour plus d’informations concernant ces classes, voir :
[YourSchemaType].MemberAttribute
[YourSchemaType].MemberElement
Note: Les véritables noms de la classe dépendent du nom de l’attribut ou de l’élément membre du schéma.
Gestion d'erreur
Les erreurs sont rapportées par exceptions. Les classes d’exception suivantes sont définies dans l’espace de noms Altova :
Classe | Classe de Base | Description |
---|---|---|
ConversionException | Exception | Exception lancée lorsqu’une conversion de type échoue |
StringParseException | ConversionException | Une valeur dans l’espace lexical ne peut pas être converti dans un espace de valeur. |
DataSourceUnavailableException | System.Exception | Un problème est survenu pendant le chargement d’une instance XML. |
DataTargetUnavailableException | System.Exception | Un problème est survenu pendant l’enregistrement d’une instance XML. |
NET suivantes sont utilisées communément :
Classe | Description |
---|---|
System.Exception | Classe de Base pour les erreurs de runtime |
System.ArgumentException | Une méthode a été appelée avec des valeurs d’argument invalide, ou bien une conversion de type a échoué. |
System.FormatException | Une valeur dans l’espace lexical ne peut pas être converti dans un espace de valeur. |
System.InvalidCastException | Une valeur ne peut pas être converie dans un autre type. |
System.OverflowException | Une valeur de source ne peut pas être représentée dans un domaine cible. |
Accéder à l’information de schéma
La bibliothèque générée permet d’accéder à des informations de schéma statique par le biais des classes suivantes :
Les propriétés qui retournent une de ces classes des métadonnées retournent null si la propriété respective n’existe pas.