Passa al contenuto principale

GETXMLDATA

DesktopWeb
warning
La specifica è deprecata nei sorgenti con STRICT maggiore o uguale a 3, al suo posto vedere classe BC_XML_DOCUMENT

Consente di leggere un file XML in modo sequenziale, e di acquisirne gli elementi e gli attributi che lo compongono (con i relativi valori).

La lettura del file utilizza un meccanismo di parsing per 'eventi'. Consideriamo ad esempio il file XML seguente, dove in grassetto sono evidenziati gli elementi che lo compongono:

\<?xml version='1.0' encoding='ISO-8859-1'?\>
\<DenunceMensili\>
\<DatiMittente Tipo='1'\>
\<CFPersonaMittente\>CODICEFISCALE\</CFPersonaMittente\>
\<RagSocMittente\>STUDIO PAGHE\</RagSocMittente\>
\<Softwarehouse\>SISTEMI SPA\</Softwarehouse\>
\<SedeINPS\>123456\</SedeINPS\>
\</DatiMittente\>
\<Azienda CFAzienda='AZIENDACF' AnnoMeseDenuncia='201102' RagSocAzienda='STUDIO PAGHE RAGIONE SOCIALE 2'\>
\<PosContributiva Composizione='FP'\>CODICE POSIZIONE\</PosContributiva\>
\<Matricola\>
\<Codice\>MATRICOLAAZIENDA\</Codice\>
\<Descrizione\>DESCRIZIONE TESTUALE DELLA MATRICOLA AZIEDALE\</Descrizione\>
\<Coefficiente\>123.45\</Coefficiente\>
\</Matricola\>
\</Azienda\>
\</DenunceMensili\>

Lettura 'per eventi' significa che il parser, leggendo il file XML, restituisce i seguenti messaggi:

  1. inizio elemento 'DenunceMensili'
  2. inizio elemento 'DatiMittente' (con acquisizione attributo 'Tipo')
  3. fine elemento 'DatiMittente' (con acquisizione attributi 'CFPersonaMittente', 'RagSocMittente', 'Softwarehouse', 'SedeINPS')
  4. inizio elemento 'Azienda' (con acquisizione attributi 'CFAzienfa', 'AnnoMeseDenuncia', 'RagSocAzienda')
  5. inizio elemento 'PosContributiva' (con acquisizione attributo 'Composizione')
  6. fine elemento 'PosContributiva' (con acquisizione valore di 'PosControbutiva')
  7. inizio elemento 'Matricola'
  8. fine elemento 'Matricola' (con acquisizione attributi 'Codice', 'Descrizione', 'Coefficiente')
  9. fine elemento 'Azienda'
  10. fine elemento 'DenunceMensili'

Gli elementi selezionati per la lettura devono essere precedentemente definiti attraverso la funzione @DEFXMLDATA, con cui sono inoltre definiti tutti gli attributi da acquisire e le relative variabili di programma in cui la lettura XML collocherà i corrispondenti valori. Gli elementi non indicati saranno ignorati.

La lettura 'per eventi' fa sì che man mano che si legge il file, in modo sequenziale, vengano riconosciuti gli elementi richiesti, scaricato il valore degli attributi nelle corrispondenti variabili, ed infine viene data la possibilità di eseguire una routine di elaborazione.

Parametri

ParametroDefinizioneI/OInformazioniVersione traduttoreSMP
TABELLAStringaINDesktopWeb
BLOBBlobINDesktopWeb
ERROREInteroINDesktopWeb
ELEMENTOXmlElementINRipetibileDesktopWeb
GESAzioneINRipetibileDesktopWeb
STRUTTURAINDesktopWeb
NAMESPACECollezioneRefDesktop
FILTROCondizioneINRipetibileDesktopWeb
FINELETTURACondizioneINRipetibileDesktopWeb
RIMUOVIBOMInteroINDesktop
IGNORACARATTERINONVALIDIInteroIN29.3DesktopWeb

TABELLA

StringaINInputValore non necessarioValore non necessarioDesktopWeb

Indica il nome del file XML da leggere, completo di percorso.

BLOB

BlobINInputValore non necessarioValore non necessarioDesktopWeb

Consente di indicare la variabile di tipo BLOB in cui è memorizzato il contenuto di un intero file XML.

ERRORE

InteroINInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

Consente al programma di intercettare e gestire l'errore restituito dalla funzione.

suggerimento

Utilizzare uno dei metodi GetLastError*() della classe BCContextInfo per ottenere le informazioni dell'errore.

ELEMENTO

XmlElementINInputRipetibileRipetibileValore non necessarioValore non necessarioDesktopWeb

Identifica l'elemento da leggere. Il parametro è Obbligatorio (ovvero è richiesto che sia indicato almeno un ELEMENTO) qualora il file non venga letto in modalità STRUTTURA.

GES

AzioneINInputRipetibileRipetibileValore non necessarioValore non necessarioDesktopWeb

Definisce la routine di gestione, che deve essere eseguita quando termina la lettura dell'elemento a cui si riferisce. Se non viene definita, la lettura XML si limita a valorizzare le variabili lette dai file XML che corrispondono agli attributi definiti.

STRUTTURA

INInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

[NOME[NomeStruttura] CARICANODI[FlagCaricaNodi] ELEMENTIVUOTI[FlagElementiVuoti]] Consente di richiedere la lettura completa del file XML, e di ottenerne il contenuto all'interno della struttura dinamica avente il nome qui indicato.

NAMESPACE

CollezioneRefReferenzaValore non necessarioValore non necessarioDesktop

Il parametro permette di indicare una collezione di tipo BC_XML_NAMESPACE alla specifica, che valorizzerà con le informazioni relative ai namespaces utilizzati all'interno dell'elemento che si sta elaborando. Per ogni namespace, la specifica aggiungerà un record contenente il prefisso e l'uri ad esso associati.

FILTRO

CondizioneINInputRipetibileRipetibileValore non necessarioValore non necessarioDesktopWeb

Esprime una condizione logica che se soddisfatta genera il parsing dell'elemento a cui è associata e dei corrispondenti sotto-elementi; altrimenti il parsing dell'elemento e dei sotto-elementi è ignorato. La chiave di ricerca è basata sui valori correnti degli attributi (specificati con = nella '@DEFXMLDATA dell'elemento). Una condizione è espressa come Operando1 <Operatore> Operando2. Si possono indicare più condizioni legate tra di loro da un operatore logico AND o OR.

FINELETTURA

CondizioneINInputRipetibileRipetibileValore non necessarioValore non necessarioDesktopWeb

Esprime una condizione logica che se soddisfatta determina la terminazione del parsing del file. La chiave di ricerca è basata sui valori correnti degli attributi (specificati con = nella '@DEFXMLDATA dell'elemento). Una condizione è espressa come Operando1 <Operatore> Operando2. Si possono indicare più condizioni legate tra di loro da un operatore logico AND o OR.

note

Quando viene applicata una condizione di fine lettura, la parsificazione del file viene interrotta. L'interruzione fa sì che la specifica '@GETXMLDATA restituisca BCContextInfo.GetLastError = 22011.Il programma BC che esegue la '@GETXMLDATA con FINELETTURA deve quindi controllare BCContextInfo.GetLastError, e gestire l'errore 22011 come condizione di non errore (ovvero, deve azzerare BCContextInfo.GetLastError).

RIMUOVIBOM

InteroINInputValore non necessarioValore non necessarioDesktop
SottoParametri

Consente al programma di decidere se intercettare e gestire l'errore restituito dalla funzione, oppure no

IGNORACARATTERINONVALIDI

29.3InteroINInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

Se valorizzato a 1, in caso di presenza di caratteri non validi nel file, anziché restituire l'errore 22086 rieffettua la lettura sostituendo tutti i caratteri non ASCII con uno spazio.

L'utilizzo del parametro esclude l'utilizzo del parametro BLOB

Errori

CodiceDescrizione
22010GetXmlData Attenzione! Il file %s non esiste! Impossibile avviare il parsing.
22011GetXmlData Errore rilevato durante il parsing del file
22086Carattere non valido nel file xml XXX, riga XXX, colonna XXX. L'esecuzione del programma verrà terminata

Esempi

Lettura e parsing del file XML

 NameSpaces.Clear()
objDocumentoLetti.Clear()

'@GETXMLDATA TABELLA[nomeFile]_
ERRORE[Errore] _
ELEMENTO[DENUNCEMENSLI] GES[GesDenunceMensili()] _
ELEMENTO[MITTENTE] GES[GesMittente()] _
ELEMENTO[AZIENDA] GES[GesAzienda()] _
ELEMENTO[POSCONTRIBUTIVA] GES[GesPosContributiva()] _
ELEMENTO[MATRICOLA] GES[GesMatricola()] _
NAMESPACE[NameSpaces]

' L'oggetto NameSpaces conterrà l'elenco dei namespaces dell'elemento che viene letto

' Terminata la lettura del file l'oggetto viene svuotato.