I comandi previsti dallo standard DOM sono potenti, ma spesso diventano un po' ripetitivi. Quando in particolare dobbiamo trovare un elemento fra molti (i figli o gli attributi di un nodo) il ciclo di ricerca richiede diverse istruzioni facilmente riutilizzabili.
Abbiamo riunito le righe di codice più ripetitive in alcune funzioni, che vi permettono di muovervi nell'albero XML utilizzando una o due righe di codice per movimento, anche se si tratta di ricerche fra i rami figli.
Le funzioni sono dichiarate in Javascript come nuovi oggetti, aventi come attributi i risultati della funzione stessa. Ecco un piccolo esempio:
var risultato_funzione = new funzione(parametro 1, .. ,parametro n);
var risultato_1 = risultato_funzione.attributo_1;
var risultato_2 = risultato_funzione.attributo_2;
Nelle nostre funzioni in genere i risultati saranno due:
- funzione.Sysubrc = valore booleano (true/false) che indica che la funzione è stata eseguita con successo
- funzione.SyBuffer = risultato della funzione.
La prima variabile vi permette di programmare usando gli accorgimenti contro gli errori descritti in uno dei paragrafi precedenti, cioè assicurandovi che il risultato della funzione esista prima di utilizzarlo. Ecco un esempio di chiamata di funzione sicuro da errori:
var risultato_funzione = new funzione(parametro 1, .. ,parametro n);
if (risultato_funzione.sySubrc)
{
/* operazioni su risultato_funzione.syBuffer */
}
La libreria di funzioni è già pronta per essere utilizzata: potete leggerla come esempio oppure copiarla e salvarla in un file testuale con estensione .js. Ripetiamo brevemente la chiamata di script esterni un file html:
<head>
<script language="Javascript" src="nome_file.js">
</script>
</head>
(la posizione in head non è obbligatoria, ma permette al vostro script di valere per tutti gli eventi generati nella pagina)
Di seguito riportiamo un elenco delle funzioni nella libreria ed una breve descrizione per ognuna di esse:
- loadXMLFile(filePath)
dato il percorso del file XML lo parserizza; syBuffer restituisce l'elemento documento, sySubrc assicura sia che il percorso non sia nullo sia che il file non esista, non sia vuoto o contenente XML non ben formattato. - loadXMLString(string)
data una stringa XML la parserizza; syBuffer restituisce l'elemento documento, sySubrc assicura sia che la stringa non sia nulla sia che contenga XML ben formattato e che la parserizzazione abbia buon esito. - findChilds (currentNode, childName)
dato il nodo currentNode ne ricerca il figlio di nome childName; syBuffer restituisce un vettore contenente tutti i figli col nome richiesto, sySubrc assicura che il vettore non si vuoto o che gli input non siano nulli. - findAttribute (currentNode, attributeName)
dato il nodo currentNode ne ricerca l'attributo di nome attributeName; syBuffer restituisce il valore dell'attributo, sySubrc assicura che l'attributo esista, che non sia vuoto o che gli input non siano nulli. - findText (currentNode)
dato il nodo currentNode ne restituisce il testo; syBuffer contiene la stringa, sySubrc assicura che il testo esista o che gli input non siano nulli.