Il tool gestisce l’importazione ed esportazione di flussi xml da/a file di database. Fornisce allo sviluppatore la possibilità di leggere e generare flussi xml attraverso un familiare file di database anziché doversi occupare di leggere ed interpretare complesse strutture xml per reperire i dati.
Il tool basa il suo funzionamento su di un file di struttura, in formato xml, il quale descrive il contenuto del flusso in modalità più semplice di un file xsd.
Il file di struttura viene utilizzato dal tool per generare il file di database che verrà utilizzato dall’utente per leggere e scrivere i dati che si desidera esportare o importare nel un flusso xml. La figura seguente mostra un esempio del file di struttura:
Esempio:
Nota: la descrizione del contenuto è necessaria per abbinare il tag Xml ad un nome univoco (che verrà utilizzato come nome di campo del file di lavoro DB); è possibile specificare solo il nome, e tralasciare il tipo, lunghezza, maschere: in questo caso il tag verrà gestito come campo alfanumerico di 64 bytes. Dovrà essere cura dello sviluppatore convertire i dati provenienti dal database aziendale in tale formato. Nel caso di tag di lunghezza inferiore a 64 bytes, il tool eseguirà il trim del valore; in caso di tag di lunghezza superiore, dovrà essere specificata con il nome struttura, es. NOME::A::1280
Il tool genera un file di database, detto di transito, basandosi sulle informazioni del file di struttura. Contiene i campi del flusso espressi in orizzontale, ovvero su un unico record.
Viene generato un record per ogni livello di profondità di un nodo. La figura seguente mostra come viene popolato il file di transito nel caso di import da flusso XML:
- il primo record contiene i campi contenuti nel tag <testata>
- il secondo record contiene il primo nodo ripetitivo <dettaglio> ed il suo primo nodo ripetitivo <sottoDettaglio>
- il terzo record contiene il secondo nodo ripetitivo < sottoDettaglio>
- il quarto record contiene il secondo nodo ripetitivo <dettaglio> ed il suo primo nodo ripetitivo <sottoDettaglio>
- il quinto record contiene il secondo nodo ripetitivo < sottoDettaglio>
- il sesto record contiene il terzo nodo ripetitivo <dettaglio>
Nel caso di export lo sviluppatore dovrà dunque attenersi a tale regola per popolare i record del file di transito per una corretta generazione del flusso.
In un flusso xml spesso è fondamentale la differenza tra l’assenza di un nodo e la presenza di un nodo con valore vuoto:
- assenza di un nodo significa che non verrà elaborato
- presenza di un nodo vuoto significa che verrà elaborato con valore vuoto (o zero in casi di numerici)
per riprodurre tale possibilità sul file di transito vengono utilizzati i campi NULL del DB2: un campo null significa assenza di nodo, un campo non null con valore vuoto (o zero) significa presenza di nodo vuoto.
Comandi disponibili:
DB2XML – genera il flusso partendo da file database di transito
Parametri:
- Indirizzo ifs del file di struttura
- Nome/libreria del file DB da utilizzare
- Indirizzo ifs del file di flusso xml da esportare
XML2DB – genera e popola file database di transito da flusso XML
Parametri:
- Indirizzo ifs del file di struttura
- Nome/libreria del file DB da generare
- Indirizzo ifs del file di flusso xml da importare
Limiti dell’attuale versione
- Interpreta solo file Xml (a breve anche Json)
- nome nodo lungo 64 bytes
- valore nodo max. 4096 bytes
- massimo 32 livelli di profondità
- massimo 256 nodi presenti nel flusso