Differenze tra le versioni di "Estrazione dati da XML con query XPath"
imported>Root (Nuova pagina: Questa action permette di estrarre dati scalari o vettoriali (array) da una stringa in formato XML tramite una o più query XPath. ==Parametri== ===XML=== E' un array di stringhe in f...) |
imported>Root |
(Nessuna differenza)
|
Versione delle 10:31, 28 feb 2013
Questa action permette di estrarre dati scalari o vettoriali (array) da una stringa in formato XML tramite una o più query XPath.
Parametri
XML
E' un array di stringhe in formato XML. Se l'elemento N-esimo dell'array è vuoto, tutti i risultati delle query XPath applicate a tale elemento sono vuoti, indipendentemente dal tipo di query e da altri parametri di compensazione. Normalmente si utilizza un solo XML ma passando più XML in array si ottiene che per ogni query XPath i suoi risultati vengono accumulati tra gli XML.
Query XPath
Sono le query XPath. Ad ogni query XPath query_X corrisponde un risultato result_X. E' possibile definire un numero arbitrario di query XPath che estraggono aspetti diversi dello stesso XML.
Copia su
I risultati delle query, che possono essere copiati negli attributi di workflow. Un risultato è sempre in formato String[] (array di stringhe). Il motore di conversione automatica dei tipi dato del workflow effettuerà la conversione al tipo di dato richiesto dalle funzioni invocate successivamente (sempre che ciò sia possibile). Dati formattati in modo non previsto potrebbero causare un errore di conversione. Se vengono passati in input più XML il risultato è l'accumulo di tutti i risultati della query per ogni singolo XML.
Non compensare i singoli risultati
Ogni volta che una query XPath viene eseguita, se il suo risultato e' vuoto non viene accumulato nulla.
Compensa i singoli risultati a minimo un elemento
Ogni volta che una query XPath viene eseguita, se il suo risultato è vuoto viene accumulato un risultato di un singolo elemento nullo. Questo permette di eseguire query di estrazione di singoli tag su più XML che potrebbero contenere o meno tali tag e garantire che l'array risultante (l'accumulo dei risultati) abbia una lunghezza pari il numero degli XML processati anche se questi mancano dei tag. Ovviamente se un singolo XML possiede il tag in oggetto più di una volta il risultato si disallinea.
Note
Ogni query produce un risultato. In base al tipo di query e al contenuto dell'XML processato, tale risultato può essere un valore singolo oppure un array di valori.
Esempio
Con il seguente XML
<popolazione>
- <persona cognome="MARIO" nome="ROSSI"/>
- <persona cognome="GIUSEPPE" nome="VERDI"/>
- <persona cognome="MARCO" nome="BIANCHI"/>
</popolazione>
la query XPath
/popolazione/persona/@cognome
produce la lista di valori
MARIO
GIUSEPPE
MARCO
Esempio
Con il seguente XML
<popolazione>
- <persona cognome="MARIO" nome="ROSSI"/>
- <persona cognome="GIUSEPPE" nome="VERDI"/>
- <persona cognome="MARCO" nome="BIANCHI"/>
</popolazione>
la query XPath
/popolazione/persona
produce la lista di valori
<?xml version="1.0" encoding="ISO-8859-1"?> <persona cognome="MARIO" nome="ROSSI"/>
<?xml version="1.0" encoding="ISO-8859-1"?> <persona cognome="GIUSEPPE" nome="VERDI"/>
<?xml version="1.0" encoding="ISO-8859-1"?> <persona cognome="MARCO" nome="BIANCHI"/>
E' quindi possibile estrarre i dati a vari livelli di granularità . Copiando i risultati in attributi d'istanza di tipo String[] e' successivamente possibile elaborare queste informazioni con le altre funzioni di manipolazione dati del Workflow (oppure effettuare altre query XPath sui singoli elementi, a patto che questi siano XML).
Essendo la sintassi XPath abbastanza estesa, si evita di inserire tutta la relativa documentazione in questa pagina. Si veda la sezione dei collegamenti esterni per maggiori informazioni a riguardo.