279 messaggi dal 08 maggio 2001
Ragazzi sto cercando di leggere il contenuto del file xml presente a questo link utilizzando il linguaggio ASP ma ma mi da errore in questo punto

For i = 0 To (currNode.length - 1) 


FILE XML
http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
dal quale dovrei estrarre il tasso di cambio delle monete estere in questo modo

1¤=1.3117 USD
1¤=130.71 JPY
1¤=1.9558 BGN
1¤=25.765 CZK
1¤=7.4588 DKK


Posto l'intero codice

<%

' creo un'istanza dell'oggetto XMLDOM 
set xmlDom = Server.CreateObject("Msxml2.DOMDocument")
xmlDom.async = false 

' leggo il file 
xmlDom.Load("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml") 

' selezioni il nodo <cube>
set CurrNode = xmlDom.selectSingleNode("cube") 

' ciclo per tutti i nodi "figli" di <cube>

For i = 0 To (currNode.length - 1) 
  Response.Write "<p> 1 ¤ =" 
  Response.write currNode.childNodes(i).text 
  Response.Write "</p>"
Next 

Set CurrNode = Nothing
Set xmlDom = Nothing 
%>



11.097 messaggi dal 09 febbraio 2002
Contributi
ciao,

il nome "cube" non è sufficiente a selezionare il nodo, devi anche fornire il suo namespace. Ecco il tuo codice corretto, ho aggiunto dei commenti.
<%

' creo un'istanza dell'oggetto XMLDOM 
set xmlDom = Server.CreateObject("Msxml2.DOMDocument")
xmlDom.async = False 
xmlDom.setProperty "ServerHTTPRequest", True

' leggo il file 
xmlDom.Load("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml") 

'importo il namespace del nodo Cube. Questo è importante altrimenti non riuscirei a selezionarlo
xmlDom.setProperty "SelectionNamespaces", "xmlns:ns='http://www.ecb.int/vocabulary/2002-08-01/eurofxref'"
'imposto il linguaggio di selezione su XPath, nel caso non fosse già quello di default
xmlDom.setProperty "SelectionLanguage", "XPath"

' seleziono qualsiasi nodo <Cube> contenga l'attributo currency
Dim currNode
Set currNode = xmlDom.SelectNodes("//ns:Cube[@currency]")

' ciclo per tutti i nodi <Cube> così ottenuti
For i = 0 To (currNode.Length - 1) 
  Response.Write "<p>1.00 ¤ = " 
  'Leggo gli attributi rate e currency
  Response.Write currNode(i).GetAttribute("rate") 
  Response.Write " "
  Response.Write currNode(i).GetAttribute("currency")
  Response.Write "</p>" & vbCrLf
Next

Set currNode = Nothing
Set xmlDom = Nothing 
%>

Qui ho selezionato direttamente i nodi Cube "interessanti", cioè quelli che contengono l'attributo currency. Infatti ci sono altri nodi Cube ma non sono quelli che cerchiamo.

ciao,
Moreno.

Enjoy learning and just keep making
279 messaggi dal 08 maggio 2001
Grazie mille moreno .....
Mentre attendevo io ho realizzato il tutto in questo modo tu cosa ne pensi ?



 ' 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")
     file = "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.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("Cube/Cube")

    ' Inizializzo il contatore per il ciclo
    i = 1
    moneta = ""
    ' Estraggo tutti i dati
    For i = 1 To nome.length - 1
     valuta = nome(i).getAttribute("currency")
  IF valuta = "BRL" then    
  cambio = nome(i).getAttribute("rate")
  moneta = moneta & cambio
  end if 
    Next


11.097 messaggi dal 09 febbraio 2002
Contributi
ciao,
direi che va comunque bene. Se sei riuscito ad ottenere il risultato voluto, puoi certamente continuare ad usare quel codice.



ciao,
Moreno

Enjoy learning and just keep making
75 messaggi dal 04 ottobre 2007
Ciao trovo molto utile il tuo codice ma se volessi inserire i dati in un db access oltre la connessione al db perche non riesco così?

'Leggo gli attributi rate e currency
Response.Write currNode(i).GetAttribute("rate")
Response.Write " "
Response.Write currNode(i).GetAttribute("currency")
Response.Write "</p>" & vbCrLf
Next


'---Inserisco il cambio nella tabella
Dim SQL2, RS2
SQL2 = "INSERT INTO cambio (currency ,rate) VALUES ('"currency"', "rate")"
Set RS2 = conn.Execute (SQL2)
279 messaggi dal 08 maggio 2001
Moreno

Non riesci ad inserire i dati nel DB xke lo esegui dopo il FOR NEXT mentre io ti suggerisco di effettuare l'inserimento nel ciclo


 For i = 1 To nome.length - 1
     valuta = nome(i).getAttribute("currency")  
     cambio = nome(i).getAttribute("rate")
 
SQL2 = "INSERT INTO cambio (currency ,rate) VALUES ('"valuta"', "cambio")"
Set RS2 = conn.Execute (SQL2)

    Next







75 messaggi dal 04 ottobre 2007
Grzie mille per il tuo interessamento, mi da però questo errore:


Microsoft VBScript compilation error '800a0410'

Invalid 'for' loop control variable

/ita/prova7.asp, line 33

For i = 1 To nome.length - 1
------^

vogliamo eliminare tutta la parte della stampa a video così semplifichiamo le cose?
che vuol dire?
Modificato da Partisan75 il 26 settembre 2013 12.19 -
279 messaggi dal 08 maggio 2001
Eccoti il codice perfettamente funzionante....

<%
'Connessione DB Access o SQL SERVER 



FUNCTION FixQuotes( theString )
FixQuotes = REPLACE( theString, "'", "''" )
END FUNCTION


' 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")
     file = "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.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("Cube/Cube")

    ' Inizializzo il contatore per il ciclo
    i = 1
    ' Estraggo tutti i dati
    For i = 1 To nome.length - 1
     valuta = nome(i).getAttribute("currency")
  cambio = nome(i).getAttribute("rate") 
     Response.Write "Valuta:" & valuta &" - Cambio:" & cambio &"<br>"
     
     
     

SQL = "INSERT INTO cambiovaluta (currency,cambio)"
SQL = SQL & " VALUES('" 
SQL = SQL & FixQuotes(valuta)        & "','"
SQL = SQL & FixQuotes(cambio)     & "')"
conn.Execute(SQL)
       
     
     
     
     
     Next



    ' Un po di pulizia...
    Set nome = Nothing
    Set objXmlDom = Nothing
    Set objXmlHttp = Nothing
    conn.close
    set conn = nothing 
%>








Modificato da djwebmaster il 26 settembre 2013 12.45 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.