Il blocco funzione FB_XmlRead consente di leggere (analizzare) un file XML ubicato nel file system del controller, oppure in una memoria estesa (ad esempio, una scheda di memoria SD). Per informazioni sul file system, consultare il capitolo Organizzazione della memoria flash nella Guida di programmazione del controller.
Il contenuto del file XML, gli elementi XML insieme con i relativi attributi e valori, viene memorizzato in un array di tipo XmlItems nella memoria applicazione del controller. È necessario dichiarare questo array e assegnarlo all'ingresso associato i_refXmlItems sul blocco funzione.
Quando si esegue il blocco funzione, l'ingresso i_refXmlItems viene memorizzato internamente per un ulteriore uso. Se viene rilevato un evento di modifica online durante l'esecuzione del blocco funzione (q_xBusy = TRUE), le variabili utilizzate internamente vengono aggiornate con il valore corrente dell'ingresso.
Il numero di elementi (somma di elementi e attributi) memorizzabili nell'array viene specificato dal parametro Gc_udiXmlMaxNumOfItems nel GPL.
L'array contiene i campi di tipo STRING per memorizzare i nomi e i valori degli elementi e attributi. È possibile specificare la lunghezza di questi STRINGs con il parametro globale Gc_uiXmlLengthOfString. Se il valore da leggere nel file supera la lunghezza specificata, il valore originale viene troncato. Se è stato troncato almeno un valore, ciò viene indicato dall'uscita q_xWarnValueTruncated.
La struttura gerarchica degli elementi dal file XML è indicata dal parametro uiParentIndex per ciascun elemento nell'array di tipo XmlItems. Per ulteriori informazioni, consultare uiParentIndex Esempio per relazioni gerarchiche indicate da uiParentIndex.
Ingresso |
Tipo di dati |
Descrizione |
---|---|---|
i_xExecute |
BOOL |
Il blocco funzione esegue l'operazione di lettura con il file XML specificato su un fronte di salita di questo ingresso. Consultare inoltre il capitolo Comportamento dei blocchi funzione con l'ingresso i_xExecute. |
i_sFilePath |
STRING[255] |
Percorso del file XML da leggere. Se si specifica un nome di file senza estensione, il blocco funzione aggiunge l'estensione .xml. |
i_sXPathItemToRead |
STRING[255] |
Espressione XPath per indirizzare gli elementi da leggere dal file XML. Valore predefinito: '//*' |
i_xReadElementsOnly |
BOOL |
Se questo ingresso è TRUE, i nomi degli elementi e i rispettivi valori vengono letti e memorizzati nel buffer dell'applicazione. Se questo ingresso è FALSE, anche gli attributi insieme con i rispettivi valori vengono letti e memorizzati nel buffer dell'applicazione. |
i_refXmlItems |
REFERENCE TO XmlItems |
Buffer fornito dall'applicazione per memorizzare gli elementi letti dal file XML specificato. Il buffer viene cancellato con l'esecuzione del blocco funzione. |
Uscita |
Tipo di dati |
Descrizione |
---|---|---|
q_xDone |
BOOL |
Se questa uscita è impostata a TRUE, l'esecuzione è stata completata correttamente. |
q_xBusy |
BOOL |
Se questa uscita è impostata a TRUE, l'esecuzione del blocco funzione è in corso. |
q_xError |
BOOL |
Se questa uscita è impostata su TRUE, è stato rilevato un errore. Per informazioni, consultare q_etResult e q_etResultMsg. |
q_etResult |
ET_Result |
Fornisce informazioni su stato e diagnostica come valore numerico. Se q_xBusy = TRUE, il valore indica lo stato. Se q_xDone o q_xError = TRUE, il valore indica il risultato. |
q_sResultMsg |
STRING[80] |
Fornisce ulteriori informazioni su stato e diagnostica come messaggio di testo. |
q_udiNumOfItemsRead |
UDINT |
Indica il numero totale di elementi e attributi letti dal file XML. |
q_xWarnValueTruncated |
BOOL |
Se si imposta questa uscita a TRUE, è stato troncato almeno un valore.
NOTA: L'uscita viene aggiornata insieme con q_xDone.
|
Per ulteriori informazioni sul comportamento del segnale degli ingressi e delle uscite di base, consultare il capitolo Comportamento dei blocchi funzione con l'ingresso i_xExecute.
Il blocco funzione fornisce ingressi e/o ingressi/uscite di tipo POINTER TO… o REFERENCE TO…. Utilizzando questo tipo di puntatore o riferimento, il blocco funzione accede all'area di memoria indirizzata.
Per poter leggere un singolo elemento o gruppo di elementi dal file XML, utilizzare la sintassi del linguaggio XPath (XML Path). Il contenuto da leggere è specificato dall'ingresso i_XpathItemToRead
La tabella elenca le espressioni XPath supportate:
Espressione XPath |
Descrizione |
---|---|
|
Seleziona tutti gli elementi nel documento. |
|
Indica un percorso assoluto all'elemento. |
|
Seleziona tutti gli elementi secondari del nodo. |
|
Seleziona tutti gli elementi discendenti del nodo. |
|
Seleziona tutti gli elementi con il nome specificato del nodo. |
|
Seleziona l'no elemento con il nome specificato del nodo. |
|
Seleziona tutti gli elementi con il nome specificato e l'attributo specificato del nodo. |
|
Seleziona tutti gli elementi con il nome specificato e l'attributo e il valore del nodo specificati. |
[]
, possono essere seguiti da una barra /
insieme con un nome di elemento per indirizzare il successivo elemento secondario.
Esempio: /…/<nome elemento>[<n>]/<nome elemento>