Cómo migrar contenido de archivos XML a Drupal 8 (o 9)

Publicado: 2021-10-05

Extraer datos de diferentes fuentes a su Drupal CMS es de lo que se trata la migración. Su fuente de migración puede ser cualquier cosa: una base de datos, otro CMS, CSV, archivos XML. Drupal siempre te brinda la flexibilidad de migrar datos desde cualquier lugar al CMS. Hemos escrito extensamente sobre migraciones de Drupal antes, como migrar desde una fuente de base de datos, migrar contenido multilingüe desde CSV, desde una fuente SQL, ¡una guía completa de procedimientos para migraciones y más! Si está buscando una guía para migrar datos de archivos XML a Drupal 8 o Drupal 9, ha llegado al lugar correcto, ¡eso es lo que vamos a discutir aquí!

Si está buscando importar fuentes externas a su sitio web de Drupal 9 utilizando el módulo Fuentes de Drupal, consulte este artículo.

Migración de XML a Drupal

Módulos de migración Drupal 8/9

Aquí, usaremos todo el conjunto de módulos de migración de Drupal

  • Emigrar
  • Migrar Drupal
  • Migrar Plus
  • Herramientas de migración

Después de instalar estos módulos, deberá crear un módulo personalizado donde escribirá el script para la migración. Primero, cree un módulo personalizado y luego cree un info.yml que incluirá los detalles del módulo. A continuación, habilite el módulo.

 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 vez que se crea el archivo info.yml, debe crear un grupo de migración para esta migración. Deberá crear este grupo de migración en la ruta: test_migration> config > install . Estos detalles son necesarios mientras se ejecuta la migración:

 id: test_migration label: test Migration description: Migrating xml data

Después de crear el grupo de migración, instale este grupo en su archivo info.yml.

 config_devel: install: - migrate_plus.migration_group.test_migration

Ahora, debe escribir un script de migración para el tipo de contenido. Este script debe estar dentro de config > install y el nombre del archivo debe ser 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 : { }
Etiqueta publicitaria

  • id : será único para cada archivo yaml y se mostrará en la lista de migración.
  • etiqueta : contendrá una descripción de la migración.
  • grupo_migración : este es el grupo principal que contiene todas las migraciones.
  • fuente : Will contiene todos los detalles de la fuente para esta migración.
  • urls : Contendrá el archivo para la migración. En el código anterior, la fuente se coloca dentro del directorio privado.
  • item_selector : el selector de elementos es la ruta desde la que se toma todo el conjunto de datos. Básicamente, dentro de esta etiqueta debe haber un conjunto de datos.
  • campos : Aquí estamos asignando valores de etiquetas a algunas variables.
  • name : que da nombres de variables.
  • etiqueta : Una breve descripción.
  • selector : En el que estamos diciendo qué valor de etiqueta se debe asignar a la variable.
  • ids : que debe ser único para cada contenido.
  • proceso : en el que estamos mapeando nombres de máquinas de campo y variables.
  • destino : En el que estamos mencionando el nombre de la entidad a la que se deben migrar los datos.

Según sus datos, ahora también puede escribir complementos para la migración. El complemento de código anterior está escrito para el campo field_author .

Después de esto, vaya a Estructura , allí verá Migración : haga clic en eso. Ahora puede ver todos los grupos de migración.

Agregar grupo de migración

Haga clic en Migración de lista . Ahí puedes ver la lista de migración yaml que hemos creado.

Datos en papel

Haga clic en el botón Ejecutar . Puede ver las opciones de migración.

Operación de importación

Aquí puede ejecutar cualquier opción que desee:

  • Importar: Esto migrará los datos.
  • Revertir: revertirá todos los datos migrados.
  • Detener: detendrá la migración en medio del proceso.
  • Restablecer: cambiará el estado a un estado inactivo.

También puede migrar los contenidos a través de la terminal con estos comandos de drush.

  • drush ms - Estado de la migración
  • drush mim <migration_id> - Importación de migración
  • drush mr <migration_id> - Reversión de la migración
  • drush mrs <migration_id> - Para hacer que el estado de migración esté inactivo.