ASPcenter.net

8 marzo 2010

Utilizzo combinato di XMLDOM ed XMLHTTP con ASP

Archiviato in: ASP e XML — Tag:, , , , , , — lukeonweb @ 09:33

I due oggetti di casa Microsoft XMLDOM ed XMLHTTP sono nati entrambi per accedere e per manipolare documenti XML; il primo sfrutta a pieno le caratteristiche del Document Object Model (DOM), mentre il secondo sfrutta il protocollo HTTP per accedere a documenti XML e non.

XMLDOM è più completo e molto più ricco di proprietà, metodi e collezioni, mentre la forza di XMLHTTP si basa sulla velocità e sulla trasparenza della trasmissione dati.


Fondamentalmente si tratta di due oggetti differenti che, tuttavia, possono collaborare tra loro; di seguito la struttura del file XML di esempio rubrica.xml:

<?xml version="1.0"?>
<database>
    <utenti>
        <nome>Max</nome>
        <cognome>Bossi</cognome>
    </utenti>
    <utenti>
        <nome>Luca</nome>
        <cognome>Ruggiero</cognome>
    </utenti>
    <utenti>
        <nome>Claudio</nome>
        <cognome>Garau</cognome>
    </utenti>
</database>

L’esempio di codice, implementato in ASP, accede al file XML appena creato attraverso XMLHTTP, carica la struttura XML nel DOM ed attraverso il DOM legge e stampa a video i dati

<%@LANGUAGE = VBScript%>
<%
    ' Dichiaro le variabili che mi servono nello script
    Dim file, objXmlHttp, objXmlDom, nome, cognome, i

    ' Specifico il file XML da utilizzare
    file = Server.MapPath("rubrica.xml")

    ' Imposto l'oggetto XMLHTTP e recuper il file XML
    Set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
        objXmlHttp.Open "GET", file, False
        objXmlHttp.Send

    ' Imposto l'oggetto XMLDOM e carico il file XML come stringa
    Set objXmlDom = Server.CreateObject("Microsoft.XMLDOM")
        objXmlDom.async = False
        objXmlDom.loadXML(objXmlHttp.responseText)

    ' Recupero i nodi del file XML
    Set nome = objXmlDom.getElementsByTagName("utenti/nome")
    Set cognome = objXmlDom.getElementsByTagName("utenti/cognome")

    ' Inizializzo il contatore per il ciclo
    i = 0

    ' Estraggo tutti i dati
    For i = 0 To nome.length - 1
        With Response
            .Write "Nome: " & nome(i).Text & "<br>"
            .Write "Cognome: " & cognome(i).Text & "<br><br>"
        End With
    Next

    ' Un po di pulizia...
    Set nome = Nothing
    Set cognome = Nothing
    Set objXmlDom = Nothing
    Set objXmlHttp = Nothing
%>

Come vedete non abbiamo utilizzato il metodo load di XMLDOM per recuperare il file (dato che l’XML lo recuperiamo con XMLHTTP) bensì il metodo loadXML, il cui scopo è quello di recuperare una stringa contenente una struttura XML, struttura creata attraverso la proprietà responseText di XMLHTTP.

Nessun commento »

Non c'è ancora nessun commento.

RSS feed dei commenti a questo articolo. TrackBack URL

Lascia un commento

ASPcenter.net è il blog italiano su ASP, ASP.Net, VB.Net, C# e Visual Studio - Funziona con WordPress