---
title: "Le funzioni dei nodi semplificano la mappatura di strutture dati gerarchiche"
date: "2018-06-12"
categories: 
  - "data-integration"
  - "tools"
tags: 
  - "data-mapping"
  - "mapforce"
  - "software-tools"
description: Scoprite come le funzioni dei nodi di MapForce semplificano la mappatura di strutture di dati gerarchiche come XML e JSON, rendendo più semplici le trasformazioni ripetitive dei dati.
---
Status: #blog

Tags:  #data-mapping #mapforce #software-tools

Categories: [data-integration](/blog/it/category/data-integration.md) 
# Le funzioni dei nodi semplificano la mappatura di strutture dati gerarchiche

Le funzioni dei nodi MapForce semplificano la mappatura di dati gerarchici, come nodi XML o file CSV, JSON, EDI o campi di database, consentendo agli utenti di definire una funzione di elaborazione dati a livello di nodo e applicarla ricorsivamente a tutti gli elementi discendenti.

Analogamente, è possibile assegnare valori predefiniti ai nodi e applicarli automaticamente ai nodi discendenti.

Le impostazioni predefinite e le funzioni dei nodi sono particolarmente utili quando un'attività di [mappatura e trasformazione dei dati](https://www.altova.com/it/mapforce) richiede la stessa logica di elaborazione per più elementi correlati in una struttura, ad esempio:

- Sostituire i valori nulli con un altro valore, applicando questa operazione ricorsivamente a tutti gli elementi discendenti
- Sostituire un valore specifico (ad esempio, "N/A") con un altro valore, ripetendo l'operazione in modo ricorsivo per tutti gli elementi discendenti
- Sostituire tutti i valori null presenti nel database quando si leggono dati da una tabella
- Rimuovere tutti gli spazi finali da tutti i valori provenienti da un database di origine
- Aggiungere un prefisso o un suffisso personalizzato a tutti i valori scritti in un file o database di destinazione
- Formattazione dei valori di output
- E molti altri

Le impostazioni predefinite e le funzioni dei nodi semplificano la mappatura dei dati gerarchici, eliminando la necessità di copiare e incollare la stessa funzione più volte all'interno della mappatura. Ripetere la stessa funzione inutilmente rende la struttura della mappatura più complessa e difficile da comprendere o modificare.

Consideriamo un esempio.

[![](/blog/images/JSON_blog_3.jpg)](JSON_blog_3.jpg)

<!--more-->

La mappatura da XML a CSV mostrata di seguito è un esempio, denominato OrderinUSD.mfd, presente nel progetto MapForce Examples, e illustra sia l'efficienza che la flessibilità delle funzioni dei nodi.

[![Visualizzazione di dati gerarchici tramite funzioni applicate ai nodi](/blog/images/node-functions-mapping.png)](node-functions-mapping.png)

Questo esempio converte un ordine da un file XML di origine in un file di testo CSV. Sono inoltre richieste le seguenti operazioni: il valore dell'elemento "Price" nel file di origine, espresso in euro, deve essere convertito in dollari, e il nome di ogni articolo ordinato deve essere convertito in maiuscolo.

Una funzione nodo soddisfa entrambi i requisiti ed è indicata dal simbolo della funzione, posizionato a destra del nodo "Articolo". Cliccando due volte sul simbolo della funzione, si apre la finestra di dialogo per la definizione delle funzioni nodo, situata sopra il pannello di mappatura:

[![Definizione della funzione nodo per la mappatura di dati gerarchici](/blog/images/node-functions-in-mapping.png)](node-functions-in-mapping.png)

Questa funzione a nodo singolo combina due operazioni di MapForce per eseguire sia le conversioni di valuta che quelle di stringa richieste. È possibile aggiungere altre righe al nodo della funzione facendo clic sulle icone a sinistra per impostare un valore predefinito o aggiungere una nuova riga di funzione.

La prima colonna di ogni riga indica se la riga si applica a un singolo livello di un bambino o a tutti i discendenti della modalità genitore.

Il secondo campo definisce il tipo di dato che verrà modificato. Cliccando sul pulsante "...", si apre la finestra di dialogo mostrata qui, che permette di scegliere il tipo di dato:

[![Selezione del tipo di dati per la funzione del nodo](/blog/images/node-functions-by-datatype.png)](node-functions-by-datatype.png)

Il nostro esempio contiene righe solo per due tipi di dati, ma una funzione nodo potrebbe essere definita con righe per ogni possibile tipo di dato. Per ogni elemento figlio del nodo principale, la riga corrispondente al tipo di dato specifico verrà eseguita.

Il terzo campo indica se la riga utilizza una funzione o un valore predefinito. In entrambi i casi, il pulsante "Modifica" apre la riga per la sua configurazione

[![Definizione di un'operazione di funzione per un nodo, utilizzata per mappare dati gerarchici](/blog/images/node-function-editing.png)](node-function-editing.png)

La definizione di una funzione di un nodo si ottiene trascinando le funzioni dalla finestra della libreria delle funzioni e/o definendo delle costanti per la funzione, collegandole a fonti di dati e uscite.

L'elemento "Amount" (quantità) nel file di esempio è in realtà la quantità ordinata per ogni articolo e non deve essere moltiplicato per il fattore di conversione della valuta definito nella funzione associata. È facile definire "Amount" come un'eccezione: basta fare clic con il tasto destro sul simbolo della funzione corrispondente e deselezionare l'opzione "Eredita le funzioni del nodo di output" dal menu contestuale.

[![Sovrascrivere la funzione del nodo durante la mappatura di dati gerarchici](/blog/images/override-node-functions-1.png)](override-node-functions-1.png)

Esiste un'ulteriore condizione per il file di output CSV. Il prezzo unitario e il subtotale per ogni articolo devono essere indicati con un segno del dollaro all'inizio. La definizione del file di output mostra che le colonne "SinglePrice" e "Price" sono definite come dati di tipo stringa, e MapForce converte automaticamente i valori decimali provenienti dalla sorgente in stringhe.

L'aggiunta dei simboli del dollaro all'inizio viene realizzata tramite una funzione aggiuntiva applicata al nodo "Righe" del componente di output, come si può vedere qui:

[![Aggiungere una funzione nodo al componente di mappatura dell'output](/blog/images/node-functions-output-component.png)](node-functions-output-component.png)

Per evitare che questa funzione applicabile ai nodi venga utilizzata per tutte le colonne contenenti dati testuali, sono state applicate delle eccezioni alle colonne "Azienda" e "Articolo". Ora, l'esempio per la mappatura di dati gerarchici utilizzando funzioni applicabili ai nodi è completo.

Come per altri esempi di MapForce, viene fornito un file di dati di origine per questa mappatura, al fine di illustrare i risultati. Ecco il file di origine visualizzato in XMLSpy [Editor XML](https://www.altova.com/it/xmlspy-xml-editor):

[![](/blog/images/mapping-source-data.png)](mapping-source-data.png)

Le mappature MapForce che richiedono trasformazioni ripetitive, come quelle utilizzate in un sistema di elaborazione degli ordini online, possono essere automatizzate tramite [MapForce Advanced Server](https://www.altova.com/it/mapforce-server). Per eseguire la mappatura a scopo di test o per una conversione una tantum, è sufficiente cliccare sul pulsante "Output" nella finestra di progettazione della mappatura.

In ogni caso, la nostra mappatura di esempio produce questo risultato:

[![File di output per l'esempio di mappatura di dati gerarchici](/blog/images/node-function-mapping-result.png)](node-function-mapping-result.png)

Oltre alla mappatura dei dati descritta in questo articolo, MapForce include numerosi altri esempi di funzioni per i nodi. Il sistema di assistenza integrato di MapForce include persino un tutorial passo-passo per creare una mappatura delle funzioni dei nodi partendo da zero.

Per constatare di persona come le funzioni dei nodi semplificano la mappatura dei dati gerarchici, cliccate qui per [scaricare una versione di prova gratuita e completamente funzionante di MapForce](https://www.altova.com/it/mapforce/download).

**AGGIORNAMENTO:** [Consultate questo articolo](https://www.altova.com/blog/mapping-structured-data-with-node-functions/) per scoprire un'altra strategia per applicare funzioni ai nodi, basata sui metadati del nodo, come il nome del nodo, la lunghezza del nodo, la precisione del tipo di dati del nodo, annotazioni personalizzate per i nodi e altro ancora.
