asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 12519
ASPCode.it - Store

  > > Articoli

Combinare XML e ASP

Data di pubblicazione: 12/03/2002        Voto della community: 3,42 (Votanti: 4)


In questo articolo vedremo come è possibile, tramite uno script ASP, prelevare le informazioni contenute in un file XML e visualizzarle sul browser.

Requisiti

  • Un server IIS con IE5 installato
  • Una discreta conoscenza di ASP
  • Una minima conoscenza di XML

Introduzione

Fondamentalmente, un documento XML è un file di testo contenente dei tag simili ai tag HTML. La differenza sostanziale è che l'HTML possiede dei tag predefiniti, mentre l'XML può definire i propri tag di volta in volta. Per esempio, in un documento XML, potremmo avere il tag "person" (<person>). In questo modo, i dati risulteranno molto più significativi per chi legge il documento.

Il File XML

Come detto in precedenza, un file XML è un normale file di testo con dei tag particolari che identificano i dati compresi tra essi. Esistono degli standard strutturali che un file xml dovrebbe seguire.

Guardando e spiegando il file xml si semplificherà notevolmente la comprensione. Di seguito è riportato il contenuto del file XML bookmarks.xml:

<?xml version="1.0" encoding="ISO8859-1" ?>
<bookmarks>
  <folder id="Albums">
    <bookmark href="http://www.zing.com/album/?id=4294337405" added="2000-05-24 10:47:05">
      <title>ZingAlbum: Chewy my temporary dog</title>
    </bookmark>
    <bookmark href="http://www.zing.com/album/?id=4294337505" added="2000-05-24 10:48:51">
      <title>ZingAlbum: Hanging out @ Victoria Day</title>
    </bookmark>
  </folder>
</bookmarks>

Fondamentalmente si tratta di un file per gestire i propri preferiti. Vediamo un tag chiamato "bookmarks"; esso è il tag che rappresenta i miei preferiti. All'interno del tag bookmarks, ho impostato i tag "folder". All'interno di questo tag vi è il tag "bookmark" (notare il singolare). All'interno dei tag bookmark ci sono degli attributi, come "href" e "added", e il tag "title". Da notare che tutti i tag hanno il loro tag di chiusura e che tutti gli attributi sono racchiusi dalle virgolette.

Il File ASP

Analizziamo ora cosa succede all'interno del file ASP. Ogni tag sarà referenziato come fosse un campo di un database. Utilizzando l'oggetto Microsoft.XMLDOM apriremo il file xml e lo scinderemo nei suoi componenti.

Se lanciamo un fil XML tramite il browser IE5, esso verrà visualizzato ben formattato e con i tag colorati in maniera funzionale. Ciò è dovuto al fatto che IE5 ha incorporato l'oggetto Microsoft.XMLDOM in modo da poter leggere i file XML e interpretarli. Questa è altresì la ragione per cui, per poter utilizzare l'oggetto in questione, è necessario avere IE 5 installato sul proprio webserver.

A questo punto esistono differenti vie per visualizzare dati da un file XML. Personalmente ho provato utilizzando un file XSL (che è più che un semplice template) ma, per diversi motivi, non soddisfaceva le mie necessità.
Il metodo per estrarre i dati da un file XML che ho utilizzato, e che illustrerò qui di seguito, è molto semplice da implementare e da spiegare.
L'intestazione:

<%
'Inizializziamo il Parser MS XML...
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = False

'Carica il file XML
strFile = Server.MapPath("bookmarks.xml")
objXML.Load (strFile)

Set AllItems = objXML.selectNodes("//folder")
%>

Fondamentalmente questa parte di codice istanzia l'oggetto Microsoft.XMLDOM, e assegna ad esso il file xml (bookmarks.xml). Esso inoltre viene richiamato per assegnare il tag folder alla variabile AllItems.

Ciclo di lettura del file XML:

<%
For I = 0 to (AllItems.Length - 1)
  Response.Write("<font color="&chr(34)&"#ababab"&chr(34)&">" &_
  AllItems(I).GetAttribute("id") & "</font><br>" & vbcrlf)
  Set Bookmarks = AllItems(I).selectNodes("bookmark")
  Response.Write("<ul>" & vbcrlf)
  For J = 0 to (Bookmarks.Length-1)
    Response.Write("<li>" & vbcrlf)
    Set Title = Bookmarks(J).selectNodes("title")
    Response.Write("<a href=" & chr(34) & Bookmarks(J).getAttribute("href") & chr(34) & ">")
    Response.Write(Title(0).text & "</a></li>" & vbcrlf)
    Set Title = nothing
  Next
  Response.Write("</ul>" & vbcrlf)
  Set Bookmarks = Nothing
Next
%>

Fondamentalmente, per comprendere questo script, potremmo pensare che stiamo iterando attraverso i campi di un database prelevando le informazioni in esso contenute. Inoltre stiamo rilevando gli attributi per ogni "nodo" (campo). Alla fine liberiamo le risorse, che resta sempre una pratica di buona programmazione.

Ciascun "nodo" ha un attributo Lenght ad esso associato, che permette di passare in rassegna ogni istanza di tale nodo all'interno del file. In questo modo è possibile iterare attraverso tutti i nodi "folder" del file (in questo caso specifico vi è solo un nodo di questo tipo). Successivamente rileviamo l'attributo "id" e lo visualizziamo sul browser. Per ogni folder, dobbiamo rilevare i bookmark in essa compresi. Perciò utilizziamo il metodo selectNodes dell'oggetto AllItems e assegnamo i nodi restituiti all'oggetto "Bookmarks". Successivamente lo script, itera attraverso gli elementi dell'oggetto "Bookmarks" e, utilizzando la stessa tecnica precedente, rileva gli attributi "href". Inoltre necessitiamo di visualizzare anche il titolo del bookmark; per fare ciò utilizziamo un altro oggetto e richiamiamo il metodo selectNodes dell'oggetto Bookmarks. Referenziamo esplicitamente il primo nodo del titolo in quanto sappiamo che ce ne sarà sempre soltanto uno [Title(0).text]. Ora costruiamo i link e visualizziamo i titoli.

Riferimenti
- Leggi l'articolo in lingua originale.
- Used with permission from CodeAnimal Network of Developer Site. For the NEW Breed of Developer.




Utenti connessi: 12519