Share |

domenica 31 gennaio 2010

XPath: Filtrare e Selezionare nodi XML

In questo articolo affronteremo la sintassi di XPath e capiremo come assemblare le sue regole per raffinare gli esiti delle query di estrazione dati da documenti XML generici.

Le regole della sintassi di XPath non sono molto complicate anzi a mio avviso rappresentano un ottimo metodo per esprimere un percorso (in inglese, path) da seguire all'interno di un documento XML.

Tuttavia, inizialmente potrebbe risultare difficile abbinare logicamente i vari simboli per formare le espressioni necessarie ad eseguire selezioni complesse di nodi XML.

Al fine di rendere più semplice la comprensione delle regole sintattiche cercherò di fornire un esempio per ogni regola che tratterò.

Come file XML da esplorare negli esempi che seguiranno utilizzo serra.xml.

Selezionare i nodi di un documento XML

Passiamo a trattare le path-expressions più utilizzate:

XPath Expressions"
EspressioneDescrizionePath Exspression Risultato
nomeSeleziona tutti gli elementi figli del nodo che corrisponde a quello indicato
/Seleziona a partire dall'elemento radice/piantaTutti gli elementi <pianta> a partire dalla radice <serra>
//Seleziona i nodi a partire dal nodo indicato indipendentemente dalla posizione in cui ci troviamo//coloreSeleziona tutti gli elementi <colore> a partire da dove si trovano
.Seleziona il nodo corrente
..Seleziona il nodo Parent del nodo corrente
@nomeSeleziona i nodi che contengono l'attributo indicato

Ricerche più precise con i Predicati

I Predicati sono utilizzati per la ricerca di nodi e attributi specifici che contengono un determinato valore.

I predicati devono essere contenuti in parentesi quadre: [].

I Predicati XPath
EspressioneRisultato
/serra/pianta[1]Seleziona il primo nodo <pianta> figlio di <serra>
/serra/pianta[last()]Seleziona l'ultimo nodo <pianta> figlio di <serra>
//serra/attrezzo[@id='1']Seleziona i nodi <attrezzo> il cui attributo id contiene un valore uguale a quello indicato

Selezionare i Nodi non conosciuti

Selezione dei nodi XLM sconosciuti
EspressioneDescrizionePath ExspressionRisultato
* Seleziona qualsiasi elemento figlio del nodo indicato/serra/*Seleziona tutti gli elementi figli di <serra> indipendentemente dal nome
@* Estrae qualsiasi attributo appartenente ai figli del nodo indicato/serra/pianta/@*Estrae tutti gli attributi degli elementi <pianta> figli di <serra> indipendentemente dal nome dell'attributo
node()Seleziona qualsiasi nodo di qualsiasi tipo

Selezioni Multiple

Grazie all'utilizzo dell'operatore '|' possiamo eseguire selezioni in più percorsi.

Selezioni Multiple
EspressioneRisultato
//serra/pianta | //serra/vasoSeleziona tutti i nodi <pianta> e <vaso> figli di <serra>

Come si può notare le regole non sono tanto difficili ed in più offrono una vasta gamma di possibili operazioni da effettuare sui dati XML.

Alla prossima,
MA.

0 commenti:

Posta un commento

Non ti è chiaro qualcosa?
No problem, posta il tuo dubbio ;)

..... e ricordati di firmarlo!