Altova MapForce 2024 Enterprise Edition

Exemple : sérialiser vers un string (XML vers base de données)

Accueil Préc Haut Suivant

Cet exemple vous guide dans les étapes nécessaires pour créer un design de mappage qui sérialise les données dans un string. L'exemple est accompagné d'un fichier d'échantillon. Si vous souhaitez consulter le fichier échantillon avant de vous lancer dans cet exemple, vous pouvez l'ouvrir depuis le chemin suivant : <Documents>\Altova\MapForce2024\MapForceExamples\Tutorial\SerializeToString.mfd.

 

Partons d'un exemple dans lequel vous avez un fichier XML (et son schéma lié) qui consiste en plusieurs éléments <Person>. Chaque élément <Person> réunit le prénom d'une personne, le nom de famille, le titre professionnel, l'extension téléphonique et l'adresse e-mail, comme suit :

 

<Person>
    <First>Joe</First>
    <Last>Firstbread</Last>
    <Title>Marketing Manager Europe</Title>
    <PhoneExt>621</PhoneExt>
    <Email>j.firstbread@nanonull.com</Email>

</Person>

 

Votre objectif est d'extraire chaque élément <Person> depuis le fichier XML et de l'insérer littéralement (y compris les balises XML) en tant que nouvel enregistrement de base de données dans la table PEOPLE d'une base de données SQLite. La table PEOPLE contient uniquement deux colonnes : ID et PERSON. Sa définition complète est la suivante :

 

CREATE TABLE PEOPLE (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, PERSON TEXT);

 

Une fois que le mappage a été exécuté, le résultat attendu est que la table PEOPLE aura le même nombre de lignes que celui des éléments <Person> dans le fichier XML.

 

Pour atteindre cet objectif, procéder comme suit :

 

1.Ajouter à la zone de mappage le composant XML de source (utiliser la commande de menu Insérer | Schéma XML/Fichier). Le fichier échantillon est disponible sous : <Documents>\Altova\MapForce2024\MapForceExamples\Tutorial\MFCompany.xml.

2.Dupliquer (copier-coller) le composant XML.

3.Sur le composant XML dupliqué, cliquer sur btn_file_string, puis sélectionner Sérialiser XML sur Strings.

mf_serialize_01

4.Cliquer avec la touche de droite sur le composant dupliqué et choisir Changer l'élément racine depuis le menu contextuel. Puis changer l'élément de racine sur <Person>.

mf_serialize_02

En général, vous pouvez changer l'élément de racine à tout élément qui a une déclaration globale (pas locale) dans le schéma XML. Tout élément qui n'est pas défini globalement dans votre schéma n'est pas listé dans le dialogue "Sélectionner l'élément racine".

 

5.Double-cliquer le composant et décocher la case Écrire déclaration XML. Cela évite l'écriture de la déclaration XML pour chaque élément <Person>.

mf_serialize_03

6.Ajouter à la zone de mappage le composant de base de données SQLite cible, depuis le champ suivant : <Documents>\Altova\MapForce2024\MapForceExamples\Tutorial\\dbserialize.db. (Pour ajouter le composant de base de données, utiliser la commande de menu Insérer | Base de données, voir aussi Connexion à une base de données). Lorsque vous serez invité à insérer un objet de base de données, choisir la table PEOPLE.

mf_serialize_04

7.Lier les composants comme indiqué ci-dessous. À gauche du mappage, l'élément <Person> mappe dans un composant de sérialisation. À droite du mappage, la valeur de string sérialisée est insérée dans la colonne PERSON de la table de la base de données PEOPLE. Enfin, le connecteur dessiné depuis <Person> vers la table PEOPLE indique à MapForce de créer un nouvel enregistrement pour chaque élément <Person> rencontré.

mf_serialize_05

8.Cliquer sur la touche A:In dans le composant de base de données, et procéder comme suit :

a.Sélectionner l'option Supprimer tous les enregistrements. Au moment du mappage, tous les enregistrements existants seront supprimés de la base de données avant d'en insérer de nouveaux

b.Sélectionner l'option généré en BD à côté de la colonne ID. Cela garantit que l'ID de l'enregistrement sera généré par la base de données. Noter que l'option généré en BD apparaît aussi si la colonne prend en charge cette option. Pour les colonnes qui ne sont pas une identité ou un champ auto-incrémenté, l'option max+1 est disponible à la place, cette option analysera quelle est la valeur ID maximum existant dans la base de données et d'insérer l'entier disponible suivant, incrémenté de 1.

mf_serialize_06

Vous venez de créer un design de mappage qui sérialise les données en string. Si vous cliquez sur l'onglet Sortie, la requête SQL d'aperçu indique que des enregistrements séparés seront insérés dans la base de données pour chaque élément <Person> dans le fichier XML, ce qui était l'objectif de ce mappage.

© 2018-2024 Altova GmbH