|
Home -> Manuali e Tutorials -> Guida XML DOM -> Struttura
Scarica il tutorial | Stampa il tutorial | Cerca nel sito
STRUTTURA AD OGGETTI
La struttura dell'interfaccia DOM si basa su classi a più livelli tra cui quelli riportati in figura seguente:

La classe più importante è quella di nodo (Node), che comprende qualsiasi elemento dell'albero XML: radice, ramo, foglia. Allo stesso livello della classe Node, ma senza figli, troviamo le classi NodeList e NodeNamedMap. Si tratta di oggetti temporanei che vengono generati durante la lettura dell'albero XML, per memorizzare dei gruppi di fratelli (ad esempio tutti i figli o tutti gli attributi di un elemento).
Attributi della classe Node che danno informazioni sul nodo:
- nodeName: restituisce il nome del nodo, quello indicato fra i "tag": <nome>..</nome>. Se si tratta del documento stesso il nome sarà "#document", per un nodo di testo invece "#text".
- nodeType: DOM assegna un valore numerico ai diversi tipi di nodo esistenti. Per i nodi più importanti si hanno i seguenti numeri: elemento = 1, attributo = 2, testo = 3, documento = 9.
- nodeValue: restituisce il valore del nodo corrente. Serve soprattutto per i nodi di testo, per la maggiorparte degli altri darà risultato "null".
Attributi della classe Node per muoversi nell'albero XML.
Quando creiamo un oggetto XML possiamo usare una o più variabili come "cursori" per memorizzare posizioni nell'albero. Ogni spostamento da una posizione nota si può effettuare con uno degli attributi che seguono.
- ownerDocument: ci permette di saltare, ovunque ci troviamo, alla radice del nostro albero.
- parentNode: restituisce il nodo genitore dell'attuale.
- childNodes: restituisce i nodi figli del nodo attuale, racchiusi in un oggetto NodeList.
- firstChild, lastChild: restituiscono rispettivamente il primo e ultimo nodo figli dell'attuale.
- previousSibling, nextSibling: restituiscono rispettivamente il fratello precedente e seguente del nodo attuale. Precedente e seguente fanno riferimento all'ordine con cui i nodi si trovano nel testo del file XML.
- attributes: restituisce gli attributi del nodo corrente, racchiusi in un oggetto NodeNamedMap.
Metodi della classe Node, di cui la maggiorparte serve per creare nuovi nodi dell'albero XML:
- hasChildNodes(): restituisce un valore booleano (true o false) in risposta alla domanda se il nodo ha dei nodi figli (compresi i nodi di testo).
La sottoclasse di nodi chiamata "Document" indica proprio il documento XML e contiene un unico (obbligatoriamente unico) oggetto, la radice dell'albero. Vediamone attributi e metodi:
Metodi della classe Document, di cui la maggiorparte serve per creare nuovi nodi dell'albero XML:
- getElementsByTagName(tag): permette di cercare tutti gli elementi con un certo nome al di sotto della radice. Gli elementi vengono messi in un oggetto NodeList. Il carattere " * " funziona come jolly per individuare tutti gli elementi.
La sottoclasse di nodi "Element" è la più popolosa e contiene tutti i rami dell'albero XML, in pratica ogni elemento al di sotto della radice che sia stato dichiarato con una coppia di "tag": <elemento></elemento>.
Metodi della classe Element, di cui la maggiorparte di questi metodi serve per creare nuovi nodi dell'albero XML:
- getElementsByTagName(tag): equivalente all'omonimo per Document.
- getAttribute (attributo): restituisce il valore, per l'elemento attuale, dell'attributo indicato.
- getAttributeNode(attributo): restituisce l'attributo specificato come nodo.
La sottoclasse di nodi "Attribute" indica gli attributi degli elementi. Gli attributi ereditano solo una parte delle proprietà dei nodi, perché non possono essere innestati gli uni dentro agli altri. Non vale quindi per essi la maggiorparte dei metodi per muovere il cursore entro l'albero: nextSibling, previousSibling, firstChild etc... Per scorrere gli attributi occorre usare l'oggetto NamedNodeMap generato dal comando "attributes".
Vediamo alcune proprietà caratteristiche solo degli attributi:
- name: restituisce il nome dell'attributo.
- specified: restituisce un valore booleano (true o false) che indica se all'attributo è stato assegnato un valore.
La sottoclasse "CharacterData" è la "mamma" di testi e commenti del file XML. Nell'albero parserizzato il testo diventa un nodo di nome "#text". I metodi della classe servono per modificare il testo.
Attributi della classe CharacterData:
- data: restituisce il testo vero e proprio contenuto nel nodo #text.
- length: restituisce il numero di caratteri che formano il testo.
Vediamo ora le due classi "NodeList" e "NamedNodeMap". Quando l'esito di un metodo può essere composto di più parti, viene creato automaticamente un oggetto di una di queste due classi per contenere i risultati. Un oggetto Nodelist è un vettore di elementi con un indice numerico, NamedNodeMap possiede le stesse proprietà di Nodelist ed in più permette di individuare gli elementi con dei nomi oltre che con l'indice.
Attributi della classe NodeList:
- length: restituisce il numero di elementi del vettore.
Metodi della classe NodeList:
- item(n): restituisce l'elemento nella posizione n. L'elemento può essere un oggetto della classe Node, con le relative proprietà. L'indice progressivo delle posizioni del vettore non parte da 1, bensì da 0: 0,1,2... Perciò la lunghezza del vettore è uguale all'ultima posizione + 1.
La classe NamedNodeMap possiede le stesse proprietà di Nodelist più la seguente:
Metodi della classe NamedNodeMap:
- getNamedItem(nome): restituisce l'elemento che corrisponde al nome indicato.
Torna su | Indice Guida | Pagina << 2 >>
|