Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Das normierte XML-Format dient dazu, Daten versions- und systemunabhängig Daten auszutauschen. Zu diesem Zweck werden die Daten so normiert, dass sich in der XML-Datei immer der gleiche derselbe Aufbau findet. Es entsteht eine Struktur, die Repositories, Entities, Columns und Translations zusammenfasst.    

...

Verarbeiten von normierten XML-Dateien

Die XML-Dateien enthalten in der Regel alle Informationen ausgehend , die von einem Repository oder einem Datensatz ausgehen. Das kann eine mehrdimensionale Datenmatrix sein. Diese Informationen lassen sich wie folgt wieder in Entities überführen. Folgend Im Folgenden ein Code-Beispiel: 

Codeblock
languagephp
use Brandbox\FrameworkEtl\Etl\ShareFile;
use Brandbox\Framework\Brandbox\Log;

$logger = new Log\PsrLogger();

$statefulImporter = $this
    ->staticController(ShareFile\ShareManager::class)
    ->getStatefulImporter('path/normalized.xml', $logger)
;

$run = $statefulImporter->run();
$dataPersistor = $statefulImporter->getDataPersistor();

$objects = $dataPersistor->getObjects();
$entities = [];

// Create entities and collect references
foreach ($objects as $repository => $importObjects) {
    foreach ($importObjects as $importObjectKey => $importObject) {
        $id = (int)$importObject->getValues()['id'];

        /* @var ShareFile\Lib\Interfaces\PrimaryImportObjectInterface $importObject */
        $entity = $this
            ->newInstance($repository)
            ->setID($id)
            ->detach()
        ;

        $dataPersistor
            ->getInventory()
            ->addReferences($importObject->getReferences(), $entity)
        ;

        $entities[$repository][$importObjectKey] = $entity;
    }
}

// Map values to entities
foreach ($objects as $repository => $importObjects) {
    foreach ($importObjects as $importObjectKey => $importObject) {
        $entity = $entities[$repository][$importObjectKey];

        $fields = $dataPersistor
            ->getFieldConverter()
            ->getImportFields($importObject->getRepository())
        ;

        $dataPersistor->mapValuesInEntity($importObject, $entity, $fields);
    }
}

...