WebSphere Enterprise Service Bus, Version 6.2.0 Systèmes d'exploitation: AIX, HP-UX, i5/OS, Linux, Solaris, Windows


Sérialisation et désérialisation d'unions portant xsi:type

Dans le XSD, une union est un moyen de fusionner les espaces lexicaux de plusieurs types de données simples connus comme membres.

L'exemple de XSD suivant montre une union comportant les membres d'un nombre entier et d'une date.

<xsd:simpleType name="integerOrDate">
	<xsd:union memberTypes="xsd:integer xsd:date"/>
</xsd:simpleType>

Cette saisie multiple peut entraîner une confusion lors de la désérialisation et de la manipulation des données.

Les objets métier prennent en charge les SDO utilisant xsi:type pour la sérialisation et suivront le même algorithme pour déterminer le type lors d'une désérialisation si le xsi:type n'est pas présent dans les données XML.

Ainsi, pour garantir que les données (le nombre "42" dans cet exemple) seront désérialisées comme un nombre entier, vous pouvez utiliser le xsi:type spécifié dans le XML d'entrée. Vous pouvez également ordonner la liste des membres de l'union dans le XSD de telle sorte que le nombre entier soit avant la chaîne. L'exemple suivant montre comment les deux méthodes sont mises en oeuvre :

<integerOrString xsi:type="xsd:integer">42</integerOrString>

<xsd:simpleType name="integerOrString">
	<xsd:union memberTypes="xsd:integer xsd:string"/>
</xsd:simpleType>

De même, si l'utilisateur souhaitait que les données soient désérialisées en tant que chaîne, l'une ou l'autre des modifications suivantes entraînerait le comportement suivant :

<integerOrString xsi:type="xsd:string">42</integerOrString>

<xsd:simpleType name="integerOrString">
	<xsd:union memberTypes="xsd:string xsd:integer"/>
</xsd:simpleType>

Remarque : si un type de chaîne est le premier membre de l'union, aucune de ses informations n'est jamais perdue. Il peut également contenir toutes les données qui seront toujours choisies par l'algorithme no xsi:type. Si vous souhaitez utiliser un autre type qu'une chaîne, vous devez soit utiliser xsi:type dans le XML soit réorganiser les types de membre dans le XSD pour donner aux autres membres la possibilité d'accepter les données.


concept Rubrique concept

Conditions d'utilisation | Commentaires en retour


Icône d'horodatage Dernière mise à jour: 07 juillet 2010


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/cbo_union.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
Ce centre d'information est mis en service par la technologie Eclipse (http://www.eclipse.org).