MapForce offre un accesso dinamico ai nomi dei nodi

Esistono situazioni, soprattutto quando si lavora con dati poco strutturati, in cui potrebbe essere necessario mappare e trasformare i componenti strutturali di un flusso di dati insieme al contenuto. MapForce può accedere dinamicamente ai nomi dei nodi degli elementi XML, agli attributi o alle colonne dei file di testo, come ad esempio il contenuto dei file CSV, per indirizzare i componenti desiderati.

L'accesso dinamico ai nomi dei nodi consente di creare, in tempo reale, elementi e attributi di destinazione i cui nomi non devono essere conosciuti in anticipo o specificati in modo esplicito nella mappatura dei dati. Questa funzionalità permette di creare mappature molto più generiche, flessibili e riutilizzabili, che richiedono meno interventi manuali nel caso in cui i modelli di dati evolvano.

Ecco un esempio di un formato di file CSV molto comune, in cui i campi dati non sono identificati dai nomi delle colonne, ma da etichette presenti in una cella adiacente all'interno della stessa riga:

I dati presenti in questo esempio non sono nemmeno strutturati in modo uniforme, poiché un record include un suffisso dopo il cognome, mentre un altro record include l'iniziale del secondo nome.

Una delle esigenze più comuni nella mappatura dei dati per file di questo tipo è quella di associare le celle della colonna A ai nomi degli elementi XML e le celle della colonna B ai valori corrispondenti a ciascun elemento. Questo può essere facilmente realizzato oggi grazie alla mappatura dinamica dei nomi dei nodi. Vediamo come funziona.

Accesso dinamico ai nomi degli elementi XML

Inizieremo creando uno schema XML molto semplice per l'elemento di destinazione della mappatura, che utilizza l'elemento <xs:any> per definire un elemento complesso, che può contenere qualsiasi elemento figlio. Ecco come appare nello schema XMLSpy:

Iniziamo la mappatura caricando il file CSV e utilizzando una funzione di raggruppamento che creerà un nuovo elemento ogni volta che il campo "FirstName" compare nella colonna A del file di input.

Successivamente, inseriamo lo schema XML di riferimento e facciamo clic con il tasto destro sull'elemento

Selezioneremo l'opzione "Mostra elementi figli con nome dinamico", che aprirà una finestra di dialogo in cui potremo scegliere il tipo di dati per gli elementi figli. Questo permetterà di visualizzare il nome del nodo e il contenuto degli elementi figli di , come mostrato qui:

Ora, è un processo semplice mappare i dati dal campo 1 (la colonna A del file CSV) ai nomi dei nodi degli elementi figli e dal campo 2 (la colonna B) al contenuto degli elementi. Ecco la mappatura finale dei dati:

La funzione "group-starting-with" all'inizio crea un nuovo elemento "" ogni volta che la parola "FirstName" viene trovata nel file di input. Successivamente, per ogni riga, i valori nella colonna A generano i nomi degli elementi figli, mentre i valori nella colonna B diventano i valori associati a ciascun elemento figlio.

L'output della mappatura descritta sopra è simile a questo:

Il vantaggio di una mappatura dei dati che utilizza l'accesso dinamico ai nomi dei nodi è che non è necessario effettuare un'analisi completa dei dati di input per identificare e mappare ogni possibile nome di elemento.

Immaginiamo uno scenario di produzione comune in cui si ricevono più file di input da una o più fonti esterne e si automatizza l'esecuzione delle trasformazioni dati utilizzando MapForce Server e FlowForce Server. Se un file di input contiene improvvisamente un elemento secondario inatteso, ad esempio "OfficeLocation" o "MailStop", i dati non andranno persi.

Accesso dinamico ai nomi degli elementi XML degli attributi

È inoltre possibile mappare dinamicamente i nomi degli attributi XML, con la stessa possibilità di creare elementi e attributi di destinazione al volo, senza doverli necessariamente identificare tutti in anticipo.