Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Lettore RSS: estrarre i dati

Realizzare il codice dello strato di logica
Realizzare il codice dello strato di logica
Link copiato negli appunti

In questa lezione creiamo il file "argomento.asp" che ha lo scopo di:

  • aprire il file con il feed rss opportuno, ovvero quello scelto dall'utente e passatogli attraverso la querystring
  • creare un form per ogni singola notizie e caricare la grammatica per ogni singolo form
  • gestire la navigazione dell'utente tra una notizia e l'altra

Ora carichiamo il feed corretto nel nostro file.

Listato 6.5: caricamento del file di feed

<%
file="https://www.html.it/rss/" & request("argomento")
Set XML = Server.CreateObject("msxml2.DOMDocument.3.0")
XML.async = false
XML.setProperty "ServerHTTPRequest", True
XML.validateOnParse =false' true
blnLoaded = XML.Load(file)
%>

Navigando il file XML dobbiamo estrarre i nodi "title", che contengono il titolo della notizia, e i nodi "description" che contengono la notizia stessa. L'applicazione leggerà queste informazioni all'utente.

Listato 6.5: caricamento del file di feed

<%
Set objNodeList = XML.getElementsByTagName("item")
For Each objNode In objNodeList
For Each objNode2 In objNode.childNodes
Select Case objNode2.nodeName
Case "title"
' estraiamo il valore del title
strTNotizia = objNode2.firstChild.nodevalue
Case "description"
' estraiamo il valore della descizione
strDNotizia = objNode2.firstChild.nodevalue
End Select
Next
i = i + 1
' qui dobbiamo inserire il nostro form voicexml con le grammatiche per la navigazione

next
%>

Abbiamo già visto come inserire il codice VXML all'interno di una pagina asp, perciò ora ci preoccupiamo soltanto di come scrivere il nostro file VXML e la parte di navigazione.

Listato 6.6: codice per la singola notizia

<form id="notizia1">
<field name="myapp">
<grammar src="../grm/navigazione.grxml"/>
<prompt>
<p><s><%=strTNotizia=%></s></p>
<p><s><%=strDNotizia=%></s></p>
</prompt>
<noinput>
<!-- inserire qui i gestori per gli eventi di nomatch e noinput -->
<filled>
<if cond="myapp== 'aiuto' ">
<prompt>
<p>
<s>I comandi disponibili sono: prossima notizia, notizia precedente, aiuto e ripeti.</s>
</p>
</prompt>
<goto next="#notizia1" />
<elseif cond="myapp== 'rip'"/>
<goto next="#notizia1" />
<elseif cond="myapp== 'not+'"/>
<goto next="#notizia2" />
...
</field>
</form>

Ovviamente possiamo parametrizzare questo codice per far si che si adatti alle nostre dieci notizia sostituendo a notizia1, un valore che incrementeremo dal nostro codice ASP, e stessa cosa faremo per i salti della navigazione.

Vediamo come modificare il codice (riportiamo solo le voci cambiate):

listato 6.7: codice per la singola notizia modificato

<!-- qui inseriamo l'indicatore incrementato da ASP-->
<form id="notizia(<%=i%>">
<!-- per gestire i salti di navigazione in avanti scriveremo: -->
<goto expr="'notizia' + <%=i+1%>" />
<!-- per gestire i salti di navigazione indietro scriveremo: -->
<goto expr="'notizia' + <%=i-1%>" />

Ti consigliamo anche