Come migrare il contenuto da file XML a Drupal 8 (o 9)
Pubblicato: 2021-10-05L'estrazione di dati da diverse origini sul tuo CMS Drupal è l'obiettivo della migrazione. L'origine della migrazione può essere qualsiasi cosa: un database, un altro CMS, CSV, file XML. Drupal ti offre sempre la flessibilità di migrare i dati da qualsiasi luogo nel CMS. Abbiamo scritto ampiamente sulle migrazioni Drupal prima, come la migrazione da un'origine database, la migrazione di contenuto multilingue da CSV, da un'origine SQL, una guida completa alle migrazioni e altro ancora! Se stai cercando una guida per la migrazione dei dati dai file XML a Drupal 8 o Drupal 9, sei arrivato nel posto giusto perché è di questo che parleremo qui!
Se stai cercando di importare feed esterni sul tuo sito Web Drupal 9 utilizzando il modulo Feed di Drupal, dai un'occhiata a questo articolo.

Moduli di migrazione Drupal 8/9
Qui utilizzeremo l'intero set di moduli di migrazione Drupal
- Migrare
- Migra Drupal
- Migra più
- Strumenti di migrazione
Dopo aver installato questi moduli, dovrai creare un modulo personalizzato in cui scriverai lo script per la migrazione. Quindi, prima, crea un modulo personalizzato e quindi crea un info.yml che includerà i dettagli del modulo. Quindi, abilita il modulo.
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
Una volta creato il file info.yml, è necessario creare un gruppo di migrazione per questa migrazione. Dovrai creare questo gruppo di migrazione nel percorso: test_migration> config > install . Questi dettagli sono necessari durante l'esecuzione della migrazione:
id: test_migration label: test Migration description: Migrating xml data
Dopo aver creato il gruppo di migrazione, installa questo gruppo nel file info.yml.
config_devel: install: - migrate_plus.migration_group.test_migration
Ora devi scrivere uno script di migrazione per il tipo di contenuto. Questo script dovrebbe essere all'interno di config> install e il nome del file dovrebbe essere 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 : sarà univoco per ogni file yaml e visualizzato nell'elenco di migrazione.
- label : conterrà la descrizione per la migrazione.
- migration_group : questo è il gruppo principale che contiene tutte le migrazioni.
- fonte : contiene tutti i dettagli della fonte per questa migrazione.
- urls : conterrà il file per la migrazione. Nel codice sopra, la sorgente è collocata all'interno della directory privata.
- item_selector : Item selector è il percorso da cui viene preso l'intero set di dati. Fondamentalmente all'interno di questo tag dovrebbe esserci un insieme di dati.
- campi : qui assegniamo valori di tag ad alcune variabili.
- name : che fornisce nomi di variabili.
- etichetta : Una breve descrizione.
- selettore : in cui diciamo quale valore di tag deve essere assegnato alla variabile.
- ids : che dovrebbe essere univoco per ogni contenuto.
- processo : in cui stiamo mappando i nomi delle macchine da campo e variabili.
- destinazione : in cui stiamo menzionando il nome dell'entità a cui migrare i dati.
Sulla base dei tuoi dati ora puoi anche scrivere plugin per la migrazione. Il plug-in di codice sopra è scritto per il campo field_author .
Dopo questo vai su Struttura , lì vedrai Migrazione - fai clic su quello. Ora puoi vedere tutti i gruppi di migrazione.

Fare clic su Migrazione elenco . Lì puoi vedere l'elenco di yaml di migrazione che abbiamo creato.

Fare clic sul pulsante Esegui . Puoi vedere le opzioni di migrazione.

Qui puoi eseguire qualsiasi opzione desideri:
- Importa: questo eseguirà la migrazione dei dati.
- Rollback: eseguirà il rollback di tutti i dati migrati.
- Interrompi: interromperà la migrazione nel mezzo del processo.
- Ripristina: cambierà lo stato in uno stato inattivo.
Puoi anche migrare i contenuti attraverso il terminale con questi comandi drush.
- drush ms - Stato della migrazione
- drush mim <migration_id> - Importazione della migrazione
- drush mr <migration_id> - Rollback della migrazione
- drush mrs <migration_id> - Per rendere inattivo lo stato della migrazione.