Comment migrer du contenu de fichiers XML vers Drupal 8 (ou 9)
Publié: 2021-10-05Extraire des données de différentes sources vers votre CMS Drupal est l'essence même de la migration. Votre source de migration peut être n'importe quoi - une base de données, un autre CMS, CSV, des fichiers XML. Drupal vous donne toujours la possibilité de migrer des données de n'importe où vers le CMS. Nous avons déjà beaucoup écrit sur les migrations Drupal, comme la migration à partir d'une source de base de données, la migration de contenu multilingue à partir de CSV, à partir d'une source SQL, un guide complet sur les migrations et plus encore ! Si vous cherchez un guide pour migrer des données depuis des fichiers XML vers Drupal 8 ou Drupal 9, vous êtes au bon endroit car c'est de cela dont nous allons parler ici !
Si vous cherchez à importer des flux externes sur votre site Web Drupal 9 à l'aide du module Drupal Feeds, consultez cet article.

Modules de migration Drupal 8/9
Ici, nous allons utiliser l'ensemble des modules de migration Drupal
- Émigrer
- Migrer Drupal
- Migrer Plus
- Outils de migration
Après avoir installé ces modules, vous devrez créer un module personnalisé dans lequel vous écrirez le script de migration. Alors d'abord, créez un module personnalisé, puis créez un info.yml qui inclura les détails du module. Ensuite, activez le module.
name: test migration type: module description: Migrating data from the csv files. core_version_requirement: ^8 || ^9 package: Migration dependencies: - drupal:migrate_source_csv - drupal:migrate_plus - drupal:migrate_tools config_devel: install: - migrate_plus.migration_group.test_migration - migrate_plus.migration.test_migration_sessions - migrate_plus.migration.test_migration_paper - migrate_plus.migration.test_migration_user
Une fois le fichier info.yml créé, vous devez créer un groupe de migration pour cette migration. Vous devrez créer ce groupe de migration dans le chemin : test_migration> config > install . Ces détails sont nécessaires lors de l'exécution de la migration :
id: test_migration label: test Migration description: Migrating xml data
Après avoir créé le groupe de migration, installez ce groupe dans votre fichier info.yml.
config_devel: install: - migrate_plus.migration_group.test_migration
Maintenant, vous devez écrire un script de migration pour le type de contenu. Ce script doit se trouver dans config > install et le nom du fichier doit être migrate_plus.migration.test_migration_paper.yml
id: test_migration_paper label: 'Migrate Paper data from the xml file' migration_group: test_migration source: plugin: url # Full path to the file. data_fetcher_plugin: file data_parser_plugin: xml urls: private://xml/session.xml item_selector: /program/session/papers/paper fields: - name : title lable : 'Paper title' selector : papertitle - name : abstract lable : 'Paper abstract' selector : abstract - name : first_name label : 'Author first name' selector : authors/author/name/givenname - name : last_name label : 'Author last name' selector : authors/author/name/surname - name : paper_id label : 'Paper identifier' selector : paperid - name : session_id label : 'Session identifier' selector : sessionid - name : start_time label : 'Paper presentation start time' selector : starttime - name : end_time label : 'Paper presentation end time' selector : endtime - name : author_name label : 'Author name' selector : authors/author/name/fullname - name : session lable : 'Session name' selector : session ids: session_id : type : string process : # Adding the mapping between the fields and the csv columns. title : - plugin : skip_on_empty method : process source : title field_abstract/value : abstract field_abstract/format : plugin : default_value default_value : "full_html" field_presentation_timing/value : plugin : format_date from_format : 'Ymd\TH:i:s' to_format : 'Ymd\TH:i:s' source : start_time field_presentation_timing/end_value : plugin : format_date from_format : 'Ymd\TH:i:s' to_format : 'Ymd\TH:i:s' source : end_time field_paper_identifier : paper_id field_session_identifier : session_id field_author : - plugin : skip_on_empty method : process source : author_name - plugin : paper_user_migration_import_process no_stub : true field_session : - plugin : skip_on_empty method : process source : session - plugin : node_migration_import_process no_stub : true destination : plugin : 'entity:node' default_bundle : paper migration_dependencies : required : { } dependencies : { }


- id : sera unique pour chaque fichier yaml et affiché dans la liste de migration.
- label : contiendra la description de la migration.
- migration_group : C'est le groupe principal qui contient toutes les migrations.
- source : Will contient tous les détails de la source pour cette migration.
- urls : contiendra le fichier à migrer. Dans le code ci-dessus, la source est placée dans le répertoire privé.
- item_selector : le sélecteur d'élément est le chemin d'où provient l'ensemble des données. Fondamentalement, à l'intérieur de cette balise, il devrait y avoir un ensemble de données.
- fields : Ici, nous attribuons des valeurs de balise à certaines variables.
- name : qui donne les noms des variables.
- label : Une courte description.
- selector : dans lequel nous indiquons quelle valeur de balise doit être affectée à la variable.
- ids : qui doit être unique pour chaque contenu.
- process : dans lequel nous mappons les noms de variables et de machines de terrain.
- destination : dans laquelle nous mentionnons le nom de l'entité vers laquelle les données doivent être migrées.
Sur la base de vos données, vous pouvez désormais également écrire des plugins pour la migration. Le plugin de code ci-dessus est écrit pour le champ field_author .
Après cela, allez dans Structure , vous y verrez Migration - cliquez dessus. Vous pouvez maintenant voir tous les groupes de migration.

Cliquez sur Migration de liste . Vous pouvez y voir la liste des yaml de migration que nous avons créés.

Cliquez sur le bouton Exécuter . Vous pouvez voir les options de migration.

Ici, vous pouvez exécuter n'importe quelle option :
- Importer : cela migrera les données.
- Restauration : restaurera toutes les données migrées.
- Stop : arrêtera la migration au milieu du processus.
- Réinitialiser : changera l'état en un état inactif.
Vous pouvez également migrer le contenu via le terminal avec ces commandes drush.
- drush ms - État de la migration
- drush mim <migration_id> - Importation de la migration
- drush mr <migration_id> - Restauration de la migration
- drush mrs <migration_id> - Pour rendre le statut de migration inactif.