Altova XMLSpy 2024 Enterprise Edition

Types de caractère

Le code C++ généré peut être compilé avec ou sans prise en charge Unicode. Selon ce paramètre, les types string_type et tstring seront tous les deux définis en tant que std::string ou std::wstring, consistant en des caractères larges ou étroits. Pour utiliser les caractères Unicode dans votre fichier XML qui ne sont pas représentables avec l’ensemble de caractères 8-bit actuels, la prise en charge Unicode doit être activée. Prêtez une attention particulière aux macros _T() . Ce macro garantit que les constantes de string sont stockées correctement, que vous compiliez pour les programmes Unicode ou non-Unicode.

 

Types de données

Le mappage par défaut des types Schéma XML dans les types de données C++ est :

 

Schéma XML

C++

Remarques

xs:string

string_type

string_type est défini en tant que std::string ou std:wstring

xs:boolean

bool


xs:decimal

double

C++ n’a pas de type décimal, donc double est utilisé.

xs:float, xs:double

double


xs:integer

__int64

xs:integer a une plage illimitée, mappée sur __int64 pour des raisons d’efficacité.

xs:nonNegativeInteger

unsigned __int64

voir ci-dessus

xs:int

int


xs:unsignedInt

unsigned int


xs:dateTime, date, time, gYearMonth, gYear, gMonthDay, gDay, gMonth

altova::DateTime


xs:duration

altova::Duration


xs:hexBinary and xs:base64Binary

std::vector<unsigned char>

L’encodage et le décodage des données binaires est effectué automatiquement.

xs:anySimpleType

string_type


 

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 :

 

altova::meta::SimpleType

altova::meta::ComplexType

 

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 "CDoc", 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]::[CDoc] .

 

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 :

 

[YourSchema]::MemberAttribute

[YourSchema]::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.

 

Voir aussi Exemple : Utiliser les bibliothèques de Schema Wrapper.

 

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

Erreur

std::logic_error

Erreur de logique de programme interne (indépendant des données d’entrée).

Exception

std::runtime_error

Classe de Base pour les erreurs de runtime.

InvalidArgumentsException

Exception

Une méthode a été appelée avec des valeurs d’argument invalide.

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.

ValueNotRepresentableException

ConversionException

Une valeur dans l’espace de valeur ne peut pas être converti dans un espace lexical.

OutOfRangeException

ConversionException

Une valeur de source ne peut pas être représentée dans un domaine cible.

InvalidOperationException

Exception

Une opération a été tentée qui n’est pas valide dans le contexte donné.

DataSourceUnavailableException

Exception

Un problème est survenu pendant le chargement d’une instance XML.

DataTargetUnavailableException

Exception

Un problème est survenu pendant l’enregistrement d’une instance XML.

 

Toutes les classes d’exception contiennent un texte de message et un pointeur dans une exception intérieure possible.

 

Méthode

Objectif

string_type message()

Retourne une description textuelle de l’exception.

std::exception inner()

Retourne l’exception qui a causé cette exception, si disponible, ou NULL.

 

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. Toutes les méthodes sont déclarées en tant que const. Les méthodes qui retournent une de ces classes des métadonnées retournent un objet NULL si la propriété respective n’existe pas.

 

altova::meta::Attribute

altova::meta::ComplexType

altova::meta::Element

altova::meta::SimpleType

© 2018-2024 Altova GmbH