So migrieren Sie Inhalte von XML-Dateien nach Drupal 8 (oder 9)

Veröffentlicht: 2021-10-05

Das Ziehen von Daten aus verschiedenen Quellen in Ihr Drupal-CMS ist das, worum es bei der Migration geht. Ihre Migrationsquelle kann alles sein – eine Datenbank, ein anderes CMS, CSV, XML-Dateien. Drupal gibt Ihnen immer die Flexibilität, Daten von überall in das CMS zu migrieren. Wir haben bereits ausführlich über Drupal-Migrationen geschrieben, wie z. B. die Migration von einer Datenbankquelle, die Migration mehrsprachiger Inhalte von CSV, von einer SQL-Quelle, eine vollständige Anleitung für Migrationen und mehr! Wenn Sie nach einer Anleitung zum Migrieren von Daten aus XML-Dateien nach Drupal 8 oder Drupal 9 suchen, sind Sie hier genau richtig, denn darüber werden wir hier sprechen!

Wenn Sie mithilfe des Drupal-Feeds-Moduls externe Feeds in Ihre Drupal 9-Website importieren möchten, lesen Sie diesen Artikel.

XML-zu-Drupal-Migration

Drupal 8/9-Migrationsmodule

Hier verwenden wir den gesamten Satz von Drupal-Migrationsmodulen

  • Wandern
  • Migrieren Sie Drupal
  • Plus migrieren
  • Tools migrieren

Nach der Installation dieser Module müssen Sie ein benutzerdefiniertes Modul erstellen, in dem Sie das Skript für die Migration schreiben. Erstellen Sie also zuerst ein benutzerdefiniertes Modul und dann eine info.yml, die die Details des Moduls enthält. Als nächstes aktivieren Sie das Modul.

 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

Nachdem die Datei info.yml erstellt wurde, müssen Sie eine Migrationsgruppe für diese Migration erstellen. Sie müssen diese Migrationsgruppe im Pfad erstellen: test_migration> config > install . Diese Details werden beim Ausführen der Migration benötigt:

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

Installieren Sie nach dem Erstellen der Migrationsgruppe diese Gruppe in Ihrer Datei info.yml.

 config_devel: install: - migrate_plus.migration_group.test_migration

Jetzt müssen Sie ein Migrationsskript für den Inhaltstyp schreiben. Dieses Skript sollte sich in config > install befinden und der Dateiname sollte „migrate_plus.migration.test_migration_paper.yml“ lauten

 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 : { }
Anzeigenlabel

  • id : Wird für jede Yaml -Datei eindeutig sein und in der Migrationsliste angezeigt.
  • label : Enthält eine Beschreibung für die Migration.
  • migration_group : Dies ist die Hauptgruppe, die alle Migrationen enthält.
  • source : Will enthält alle Quelldetails für diese Migration.
  • urls : Enthält die Datei für die Migration. Im obigen Code wird die Quelle im privaten Verzeichnis platziert.
  • item_selector : Item selector ist der Pfad, aus dem der gesamte Datensatz entnommen wird. Grundsätzlich sollte sich innerhalb dieses Tags ein Datensatz befinden.
  • Felder : Hier weisen wir einigen Variablen Tag-Werte zu.
  • name : Gibt Variablennamen an.
  • label : Eine kurze Beschreibung.
  • selector : In dem wir angeben, welcher Tag-Wert der Variablen zugewiesen werden soll.
  • ids : Welche für jeden Inhalt eindeutig sein sollten.
  • process : In dem wir Variablen- und Feldmaschinennamen zuordnen.
  • Ziel : In dem wir den Entitätsnamen erwähnen, zu dem Daten migriert werden sollen.

Basierend auf Ihren Daten können Sie jetzt auch Plugins für die Migration schreiben. Das obige Code-Plugin wurde für das Feld field_author geschrieben.

Danach gehen Sie zu Struktur , dort sehen Sie Migration – klicken Sie darauf. Sie können jetzt alle Migrationsgruppen sehen.

Migrationsgruppe hinzufügen

Klicken Sie auf Listenmigration . Dort sehen Sie die Liste der von uns erstellten Migrations -YAML .

Papierdaten

Klicken Sie auf die Schaltfläche Ausführen . Sie können die Migrationsoptionen sehen.

Vorgang importieren

Hier können Sie jede gewünschte Option ausführen:

  • Importieren: Dadurch werden die Daten migriert.
  • Rollback: Setzt alle migrierten Daten zurück.
  • Stop: Stoppt die Migration mitten im Prozess.
  • Zurücksetzen: Ändert den Status in einen Ruhezustand.

Mit diesen Drush-Befehlen können Sie die Inhalte auch über das Terminal migrieren.

  • drush ms – Migrationsstatus
  • drush mim <migration_id> – Migrationsimport
  • drush mr <migration_id> – Rollback der Migration
  • drush mrs <migration_id> – Um den Migrationsstatus in den Leerlauf zu versetzen.