2 pagine in totale: <<Indietro 1 [2]
L'implementazione
Come abbiamo detto, Elenco.asp è lo script che visualizza la struttura del forum nel frame superiore. Il cuore del suo funzionamento sta in queste linee di codice:
<%
'
' Scrive l'elenco dei messaggi dal file messaggi.xml
'
sub scrivifiglio(figlio,tabula)
for y = 0 to figlio.childnodes.length-1
set attuale=figlio.childnodes.item(y)
tot=tot+1
if tabula>10 then tabula=10
'
%>
<tr>
<td width=1 bgcolor=#000000></TD>
<td nowrap>
<%for u=1 to tabula:response.write " ":next
%>
<img src="busta.gif">
<a href="dettagli.asp?id=<%=attuale.nodename%>" target="dettagli">
<%=attuale.getattribute("oggetto")%></a></td>
<td width=1 bgcolor=#000000></TD>
<td nowrap>
<%=attuale.getattribute("nome")%></td>
<td width=1 bgcolor=#000000></TD>
<td nowrap>
<%=attuale.getattribute("data")%></td>
<td width=1 bgcolor=#000000></TD>
<td nowrap>
<%=formatnumber(attuale.getattribute("dimensione")/1024,2)&" KB"%></td>
<td width=1 bgcolor=#000000 height=100%></TD>
</tr>
<%
'
if attuale.hasChildNodes then
call scrivifiglio(attuale,tabula+1)
end if
next
end sub
'
set xml=server.createobject("Microsoft.XMLDOM")
xml.async=false
xml.load(server.mappath("messaggi.xml"))
if xml.parseError<>0 then
set xmlroot=xml.createElement("messaggi")
xml.appendchild xmlroot
end if
tot=0
call scrivifiglio(xml.documentelement,0)
set xml=Nothing
'
%>Si noti la sub ?scrivifiglio? che legge sequenzialmente il file XML e grazie alla proprietà .hasChildNodes permette di leggere qualsiasi nodo all'interno del precedente.
Infine, lo script principale apre il file XML e passa alla funzione ?scrivifiglio? la root di tale documento, cominciando lo scanning del file XML alla ricerca di messaggi.
Analizziamo ora lo script Dettagli.asp.
Questo file visualizza il messaggio selezionato nel frame superiore. Accetta come parametro ?id? che identifica il messaggio da visualizzare. Se tale parametro è nullo, viene visualizzato il messaggio ?Nessun messaggio selezionato?.
Una volta preso questo valore, grazie alle funzioni viste poco fa, prenderemo i dati che ci interessano e li visualizzeremo nel frame inferiore.
<%
id = request("id")
if id = "" then
da = ""
oggetto = ""
email = ""
commento="<br>Nessun messaggio selezionato"
else
'
set xml=server.createobject("Microsoft.XMLDOM")
xml.async=false
xml.load(server.mappath("messaggi.xml"))
'
Set objNodeList = xml.getElementsByTagName(id)
oggetto = objNodeList.item(0).getattribute("oggetto")
da = objNodeList.item(0).getattribute("nome")
email = objNodeList.item(0).getattribute("email")
commento = objNodeList.item(0).getattribute("commento")
'
set xml=Nothing
'
end if
%>Ecco infine una schermata dei file richiedi.asp e inserisci.asp:

Il primo script visualizza il form in cui inserire i dati, il secondo inserisci i dati inseriti dall'utente nel file XML. Anche in questo caso lo script ?richiedi.asp? accetta un parametro (id), se è nullo il messaggio dev'essere inserito come primo nodo nel file XML, altrimenti i dati inseriti vengono memorizzati nella giusta posizione del nodo selezionato dall'utente.
Qui sono presenti due nuove funzioni:
.insertBefore(newNode, root.childNodes.Item(0))Che inserisce il nuovo nodo (in questo caso il nuovo messaggio) all'inizio (before) di qualsiasi altro messaggio.
.removeChild(root.childNodes.Item(numero_nodo))Che cancella un nodo dal file XML.
Conclusioni
Da quanto si è visto sinora l'XMLDOM utilizzato con le ASP permette di manipolare dei documenti XML in maniera semplice e anche abbastanza intuitiva. La trattazione di questi tipi di documenti non dev'essere vista come l'utilizzo di un database, ma come un modo avanzato di manipolazione di un file di testo (si veda l'open ad inizio dello script, e alla fine, il save per memorizzare il documento modificato in tutti gli script visti sinora).
Le funzioni nell'XMLDOM sono numerose e coprono pressoché tutto il fabbisogno che un programmatore ASP può aver bisogno con i suoi script. Per ulteriori informazioni invito a visitare la sezione relativa all'SDK su MSDN.
Approfondimenti
- Introduzione a XML
- XSL e gestione degli stili in XML
- Root, nodi e figli nell'accesso ad XML
- Un contatore in XML
2 pagine in totale: <<Indietro 1 [2]
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Stampa
Download



