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 | ||
---|---|---|
| ||
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); } } |
...