Hej, Löste detta själv.Plocka värde från en xml-fil och lagra i en tabell
har en fundering om hur man enklast kan lösa följande problem.
Jag plockar hem en xml-fil från http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml (för att se filens innehåll se nedan) denna genererar valutakurser, jag är endast intresserad av en kurs och det är SEK och vill spara detta värde i min databas.
Om jag förstår det rätt kan man göra på olika sätt, ta hem i en textsträng som jag gjort nedan,
byta ut allt jag inte är intresserad av och behålla endast SEK-kursen. (Hur?)
Det skall tydligen gå via sk. DOMfunktion också - kikat på detta och kopierat ett script men ej fått det att fungera.
(Den koden har vi allra längst ned - den genererar följande felkod:
Körningsfel i Microsoft VBScript fel '800a01c2'
Fel antal argument eller felaktig egenskapstilldelning.: 'Load')
Någon som har ett vägledande tips eller gjort något liknande?
Så här tar jag hem xml-dokumentet och skriver ut det på sidan.
<code>
<%Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
objXmlHttp.open "GET", "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml", False
objXmlHttp.send
if objXmlHttp.status = 200 then
' Return header code must be equal to 200
strHTML = objXmlHttp.responseText
response.Write(Server.HTMLEncode(strHTML))
else
'There is an erro
response.Write("Error : " & objXmlHttp.statusText)
end if
Set objXmlHttp = Nothing
%>
</code>
Så här ser XML-dokumentet ut:
<code>
<?xml version="1.0" encoding="UTF-8"?>
<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
<gesmes:subject>Reference rates</gesmes:subject>
<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
<Cube>
<Cube time='2011-02-03'>
<Cube currency='USD' rate='1.3745'/>
<Cube currency='JPY' rate='112.46'/>
<Cube currency='BGN' rate='1.9558'/>
<Cube currency='CZK' rate='24.088'/>
<Cube currency='DKK' rate='7.4557'/>
<Cube currency='ILS' rate='5.0710'/>
<Cube currency='GBP' rate='0.84865'/>
<Cube currency='HUF' rate='269.75'/>
<Cube currency='LTL' rate='3.4528'/>
<Cube currency='LVL' rate='0.7015'/>
<Cube currency='PLN' rate='3.9147'/>
<Cube currency='RON' rate='4.2630'/>
<Cube currency='SEK' rate='8.8800'/>
<Cube currency='CHF' rate='1.2987'/>
<Cube currency='NOK' rate='7.8585'/>
<Cube currency='HRK' rate='7.4207'/>
<Cube currency='RUB' rate='40.3630'/>
<Cube currency='TRY' rate='2.1885'/>
<Cube currency='AUD' rate='1.3582'/>
<Cube currency='BRL' rate='2.2917'/>
<Cube currency='CAD' rate='1.3596'/>
<Cube currency='CNY' rate='9.0511'/>
<Cube currency='HKD' rate='10.6990'/>
<Cube currency='IDR' rate='12436.82'/>
<Cube currency='INR' rate='62.6700'/>
<Cube currency='KRW' rate='1518.90'/>
<Cube currency='MXN' rate='16.5427'/>
<Cube currency='MYR' rate='4.1634'/>
<Cube currency='NZD' rate='1.7821'/>
<Cube currency='PHP' rate='60.383'/>
<Cube currency='SGD' rate='1.7493'/>
<Cube currency='THB' rate='42.431'/>
<Cube currency='ZAR' rate='9.8951'/>
</Cube>
</Cube>
</gesmes:Envelope>
</code>
Koden för "Dom-funktionen"
<code>
<%
Set XMLDoc = CreateObject("MSXML.DOMDocument")
XMLDoc.setProperty "ServerHTTPRequest", true
XMLDoc.async=false
XMLDoc.Load = "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml"
IF XMLDoc.parseError.errorCode=0 Then
Dim node
i = 0
For Each node in XMLDOc.selectNodes("Cube/Cube")
If i Mod 2 <> 0 Then row_count = "row-odd" Else row_count = "row_even" END IF
Response.Write( "<p class=""col-1 " & row_count & """>" & GetChildNodeValue(node, "Cube currency") & " </p>" & VbCrLf &_
"<p class=""col-2 " & row_count & """>" & GetChildNodeValue(node, "rate") & " </p>" & VbCrLf &_
"<p class=""clear-all""> </p>" & VbCrLf)
i = i + 1
Next
Response.Write( "<p class=""site-topic-1 row-topic"">Totalt:</p>" & VbCrLf &_
"<p class=""site-topic-2 row-topic"">0</p>" & VbCrLf &_
"<p class=""site-topic-3 row-topic"">0</p>" & VbCrLf &_
"<p class=""site-topic-4 row-topic""> </p>" & VbCrLf &_
"<p class=""clear-all""> </p><br />" & VbCrLf)
Else
Response.write XMLDoc.parseError.reason
End If
%>
</code>Sv: Plocka värde från en xml-fil och lagra i en tabell
Är det någon som är intresserad av koden följer den här:
<code>
<%
URL = "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"
Set objXML = Server.CreateObject("MSXML2.DOMDocument")
objXML.setProperty "ServerHTTPRequest", True
objXML.async = False
objXML.Load(URL)
Set currencyLookup = Server.CreateObject("Scripting.Dictionary")
Set cubes = objXML.getElementsByTagName("Cube")
For c = 0 To cubes.Length - 1
Set cube = cubes.Item(c)
' Response.Write cube.xml
curName = Trim("" & cube.getAttribute("currency") )
curRate = Trim("" & cube.getAttribute("rate") )
If curName <> "" AND curRate <> "" Then
currencyLookup.Add curName, CDBL(curRate)
End If
Next
' plocka sek värdet
sek = currencyLookup ("SEK")
' om vi har ett värde så...
If Not ( IsEmpty(sek) ) Then
Response.Write "Kursen på 1 EURO = " & FormatNumber(sek / 10000,3) & " SEK<br/>"
End If
%>
</code>