Home Page Home Page Articoli Ricerca in un file XML: un Textbox per il tuo sito dinamico

Ricerca in un file XML: un Textbox per il tuo sito dinamico

Una soluzione semplice ed elegante per creare un sito Web dinamico consiste nell?utilizzo di XML. Vi mostrerò in questo articolo come implementare un campo di ricerca per i vostri siti basati su XML e .NET.
Autore: Luigi Corrias Livello:
Una delle caratteristiche salienti della piattaforma .NET è il supporto ad XML (Bill Gates lo considera la "lingua franca" di Internet).
Ed XML sta diventando una soluzione originale per la creazione di siti amatoriali dinamici al posto dei tipici database che si utilizzano in queste occasioni, basti pensare ai BLOG che vanno tanto per la maggiore dopo le corrispondenze dal fronte del conflitto in Iraq.
Mentre è piuttosto facile scrivere del codice che inserisca o cancelli un nodo XML ho pensato di mostrarvi come implementare una utile funzionalità che dovrebbe essere presente in qualsiasi buon sito Web ovvero un campo che consenta una veloce ricerca tra le pagine che lo compongono.
( a questo proposito confronta i consigli di Jacob Nielsen il famoso guru dell'http://www.useit.com/alertbox/20010513.html ">Usabilità Web).
Con il Classic asp questa funzione era implementata tramite l?Index Server, un componente aggiuntivo di Windows NT/2000 ( un?articolo che descrive la configurazione è qui http://www.xefteri.com/articles/apr192002/default.aspx ">Indexing Service Win2K).

L'algoritmo
L?algoritmo che vogliamo implementare è molto semplice.

Assumendo che il lettore conosca il ?funzionamento? di un file xml, ovvero la sintassi con cui sono organizzati i dati, il problema sta ovviamente nel reperire le informazioni che ci interessano.

Raggiungiamo questo obiettivo in due fasi:

  • la prima fase consiste nel creare una interfaccia utente ovvero un modulo Form che contiene gli elementi nei quali inserire la nostra ricerca.

  • La seconda fase consiste nell?elaborazione dei valori inseriti



Il Codice
Riferendoci alla prima fase dell?algoritmo creiamo

  • un campo di tipo TextBox nel quale l?utente del nostro sito inserirà il testo che vuole cercare

  • un campo DropDownList ovvero un elemento grafico che consente di effettuare una scelta tra diversi elementi attraverso una lista scorrevole. La lista scorrevole è popolata con le diverse sezione del file XML che vogliamo esplorare: nella fattispecie il mio curriculum. Se date un?occhiata al codice utilizzato vedrete che il Data Source impiegato è un Hash Table creato in maniera non dinamica.




Creiamo questi due elementi attraverso questo semplice codice che costruisce due Forms Controls


<form id="Form1" method="post" runat="server">

<asp:textbox id="TextBox1" runat="server" /><br>
<asp:dropdownlist id="DropDownList1" runat="server" />
<asp:linkbutton id="LinkButton1" runat="server" text="cerca"/>

</form>


I valori inseriti e selezionati attraverso l?interfaccia utente vanno poi a finire in un ciclo select contenuto nella subRoutine Page_Load()

NOTA: la SubRoutine Page_Load() innesca automaticamente il l?evento Page_Load della classe Page dalla quale derivano tutte le nostre pagine aspx e quindi deve essere presente in tutte le nostre applicazioni.


Select Case Request.Form("DropDownList1")

Case "sistemi-operativi"


NodeValore = objXMLDoc.SelectSingleNode ("//os[text()='" + valore + "']")
nodeVersione = objXMLDoc.SelectSingleNode ("//os[text()='" + valore + "']/versione")

If nodevalore is Nothing then

'Fai qualcosa

else

'Fai qualcos?altro


Case "linguaggi"

'eccetera eccetera

Case "databases"

'eccetera eccetera

Case "applicativi"

'eccetera eccetera

Case Else

exitSelect=""

End Select


All?interno di ogni singolo caso verificato dal ciclo select controlliamo se il valore è presente all?interno del documento xml.

Questo avviene utilizzando il metodo SelectSingleNode() dell?oggetto XMLDocument che è disponibile nel nostro codice poiché noi lo abbiamo preliminarmente importato attraverso i namespaces System.Xml.

Il parametro che passiamo a questo metodo è una query XPath.

Sebbene lo spazio dell?articolo non consenta un?approfondita spiegazione di XPath mi sembra utile approfondirlo brevemente:
Xpath è un linguaggio, specificato del W3C.org (http://www.w3.org/TR/xpath ">W3.Org XPath) che serve per effettuare ricerca all?interno di un file XML.
Per intenderci, una specie di SQL per documenti XML!
È stato dapprima utilizzato per effettuare conversioni tra file XML di diverso formato con XSLT
(per passare, ad esempio, da un semplice documento html a uno wml )
La sintassi abbreviata di questo linguaggio assomiglia a quella utilizzata dal DOS per navigare tra le varie directory e sottodirectory.
Un buon tutorial OnLine è presente http://www.w3schools.com/xpath/default.asp ">Tutorial XPath

Se nel documento XML esiste il valore che

1. abbiamo passato attraverso il campo textbox,
2. selezionato attraverso il ciclo select
3. elaborato attraverso il metodo SelectSingleNode()

un messaggio ci avverte che la ricerca ha avuto buon fine altrimenti un altro messaggio ci avverte che la ricerca non ha esitato nulla.
I messaggi sono realizzati, molto semplicemente, valorizzando la proprietà text di un Label Controls

NOTA: Poiché, come sanno tutti, i file XML sono Case Sensitive ovvero notano la differenza tra caratteri maiuscoli e minuscoli il valore passato viene elaborato per essere scritto tutto minuscolo attraverso la tipica funzione VBScript lcase().
Ovviamente anche i valori del file XML dovranno essere scritti in carattere minuscolo!
Nota pure che Xpath non ha una funzione analoga alla clausola LIKE di SQL, quindi le ricerche immesse dovranno essere precise altrimenti non esiteranno nulla !

Il codice dell?esempio allegato è più completo di quello esposto nell?articolo che ha scopi didattici

Un Piccolo Trucco
Ti è piaciuto il mio piccolo articolo e vuoi creare anche tu un file XML per configurare o creare contenuti dinamici nel tuo sito amatoriale?
Fai attenzione perché i caratteri accentati non sono supportati.
Se usi il notepad, per superare questo problema devi importare la seguente direttiva in cima al codice.


<?xml version="1.0" encoding="UTF-8" ?>


e devi salvarlo come se fosse un file qualsiasi con la codifica UTF-8



Conclusione
Tutto qui!
Questo articolo, il cui codice può essere anche utilizzato per ricavare valori da un vostro file di configurazione, è un?idea per organizzare e creare pagine dinamiche utilizzando in maniera originale XML e la piattaforma .NET
Voto medio articolo: 4.8 Numero Voti: 4

File allegati


86_xmlsearch.zip (149 Kbyte)
Luigi Corrias

Luigi Corrias

Mi chiamo Luigi Corrias, sono laureato in Filosofia, vivo e lavoro a Genova, città che non amo ma dalla quale non riesco a stare lontano ( forse perché sono vicino al mare..). Sono un discreto sviluppatore Web e Wireless, ho creato wapitalia.it e collaboro con diversi, prestigiosi siti. Scrivo con discreta fr... Profilo completo

Articoli collegati

Creare pagine HTML utilizzando XML e XSLT (XML2HTML)
In questo articolo vedremo come creare una pagina HTML "formattata" partendo da un file XML e trasformandolo tramite XSLT. Tutti sapete cosa sia un documento HTML, quasi tutti sapete cosa sia un documento XML ma pochi sanno cosa sia l’ XSLT, cerchiamo, quindi, in poche righe, di capire di cosa stiamo parlando.
Autore: Stefano Passatordi | Difficoltà: | Commenti: 7
XML in SQL Server 2005
Scopriamo come è stato implementato il supporto nativo XML in SQL Server 2005, mostrando anche come è possibile con XQuery gestire e manipolare i dati XML all'interno del Database.
Autore: Marco Caruso | Difficoltà: | Commenti: 2 | Voto:
BLOB in XML
In quest'articolo vedremo come scrivere e leggere Blob(Binary Large Object) in un file XML utilizzando la classe XmlTextWriter e la classe XmlTextReader.
Autore: Marco Caruso | Difficoltà: | Commenti: 1 | Voto:
Il DOM XML
Microsoft ha messo a disposizione degli sviluppatori un intero namespace (System.XML) per la manipolazione dei files XML tramite il DOM, vediamo in questo articolo alcuni percorsi per operare facilmente con XML
Autore: Marco Caruso | Difficoltà: | Commenti: 16
SOAP Headers e sicurezza nei web services
Hai un web service e non sai se è sicuro? Questo articolo ti illustra uno dei tanti metodi per rendere sicuro il tuo web service, i SOAP Headers.
Autore: Giovanni Ferron | Difficoltà: | Commenti: 2 | Voto:
dotNetHell Contents Web Service
Un nuovo Web Service a disposizione di tutti quelli che desiderano pubblicare i contenuti offerti da dotNetHell (Articoli, News e Tips) nei loro siti Web tramite l'utilizzo di script preconfezionati per ASP Classico, ASP.NET, PHP e Javascript
Autore: David De Giacomi | Difficoltà: | Voto:
Il calcolo del Codice Fiscale
Mostreremo in questo articolo un algoritmo molto comune; è l'algoritmo che ci permette di calcolare il Codice Fiscale. Oltre a questo dotNetHell mette a disposizione un Web Service che può essere "consumato" (utilizzato) da chiunque liberamente.
Autore: David De Giacomi | Difficoltà: | Commenti: 12 | Voto:
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5