Altova MapForce 2027 Professional Edition

Exemple : Sérialiser vers une chaîne (XML vers base de données)

Accueil Préc Haut Suivant

Cet exemple vous guide à travers les étapes nécessaires à la création d'un modèle de mappage permettant de sérialiser des données en une chaîne de caractères. L’exemple est accompagné d’un fichier d’exemple. Si vous souhaitez consulter le fichier d'exemple avant de commencer cet exemple, vous pouvez l'ouvrir à partir du chemin d'accès suivant : <Documents>\Altova\MapForce2027\MapForceExamples\DocExamples\SerializeToString.mfd.

 

Supposons que vous disposiez d'un fichier XML (et de son schéma associé) composé de plusieurs éléments <Person>. Chaque élément <Person> décrit le prénom, le nom, le poste, le numéro de poste et l'adresse e-mail d'une personne, 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> du fichier XML et de l’insérer tel quel (balises XML comprises) en tant que nouvel enregistrement dans la table PEOPLE d’une base de données SQLite. La table PEOPLE ne contient que 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 le mappage exécuté, le résultat attendu est que la table PEOPLE comporte autant de lignes que le nombre d'éléments <Person> présents dans le fichier XML.

 

Pour y parvenir, procédez comme suit :

 

1.Ajoutez à la zone de mappage le composant XML source (utilisez la commande de menu Insérer | Fichier/schéma XML). Le fichier d'exemple est disponible à cet emplacement : <Documents>\Altova\MapForce2027\MapForceExamples\DocExamples\MFCompany.xml.

2.Dupliquez (copiez-collez) le composant XML.

3.Sur le composant XML dupliqué, cliquez sur btn_file_string, puis sélectionnez Sérialiser XML vers chaînes.

mf_serialize_01

4.Cliquez avec le bouton droit sur le composant dupliqué et sélectionnez Changer Élément dans le menu contextuel. Remplacez ensuite l'élément racine par <Person>.

mf_serialize_02

En général, vous pouvez remplacer l'élément racine par n'importe quel élément disposant d'une déclaration globale (et non locale) dans le schéma XML. Les éléments qui ne sont pas définis globalement dans votre schéma n'apparaissent pas dans le dialogue "Sélectionner l'élément racine".

 

5.Double-cliquez sur le composant et décochez la case Écrire déclaration XML. Cela empêche la déclaration XML d'être écrite pour chaque élément <Person>.

mf_serialize_03

6.Ajoutez dans la zone de mappage le composant de base de données SQLite cible, à partir du chemin suivant : <Documents>\Altova\MapForce2027\MapForceExamples\DocExamples\dbserialize.db. (Pour ajouter le composant de base de données, utilisez la commande de menu Insérer | Base de données ; voir également Se connecter à une base de données). Lorsque vous êtes invité à insérer un objet de base de données, sélectionnez la table PEOPLE.

mf_serialize_04

7.Liez les composants comme indiqué ci-dessous. Du côté gauche du mappage, l'élément <Person> est mappé au composant de sérialisation. Du côté droit du mappage, la valeur de chaîne sérialisée est insérée dans la colonne PERSON de la table de base de données PEOPLE. Enfin, le connecteur reliant <Person> à la table PEOPLE indique à MapForce de créer un nouvel enregistrement pour chaque élément <Person> rencontré.

mf_serialize_05

8.Cliquez sur le bouton A:In du composant de base de données, puis procédez comme suit :

a.Sélectionnez l’option Supprimer tous les enregistrements. Au moment de l’exécution du mappage, cela supprimera tous les enregistrements existants de la base de données avant l’insertion de nouveaux enregistrements.

b.Sélectionnez l’option généré par 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. Notez que l’option généré par BD n’apparaît que si la colonne prend en charge cette option. Pour les colonnes qui ne sont ni des champs d’identité ni des champs à incrémentation automatique, l’option max+1 est disponible à la place : cette option vérifie quelle est la valeur maximale déjà présente dans cette colonne et insère le prochain entier disponible, incrémenté de 1.

mf_serialize_06

Vous venez de créer un schéma de mappage qui sérialise les données en chaîne de caractères. Si vous cliquez sur le volet Sortie, l’aperçu de la requête SQL indique que des enregistrements distincts seront insérés dans la base de données pour chaque élément <Person> du fichier XML, ce qui était l’objectif de ce mappage.

© 2020-2026 Altova GmbH