如何更改世界天气在线图标

问题描述:

我使用经典的asp和XML在线实现了天气小部件,并且一切似乎都正常,但我想知道是否有人知道如何更改图标?如何更改世界天气在线图标

感谢

<% 
Function getweather(city) 
    Dim tempC, wDesc, wIcon, currentWeather 
    Dim wDate, wHigh, wLow, extWeather 

    url = "http://free.worldweatheronline.com/feed/weather.ashx?q=" & city & ",Canada&format=xml&num_of_days=4&key=********" 
    set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") 
    xmlhttp.open "GET", url, false 
    xmlhttp.send "" 

    set objXML = Server.CreateObject("MSXML2.DOMDocument") 
    objXML.async = false  
    objXML.loadxml xmlhttp.responseText 

    set x = objXML.getElementsByTagName("current_condition") 
    if x.length = 0 then 
     retStr = "Error" 
    else   
     for i = 0 to x.item(0).childNodes.length - 1 
      if x.item(0).childNodes(i).nodeName = "temp_C" then 
       tempC = x.item(0).childNodes(i).text & "&deg;C" 
      end if 
      if x.item(0).childNodes(i).nodeName = "weatherDesc" then 
       wDesc = x.item(0).childNodes(i).text 
      end if 
      if x.item(0).childNodes(i).nodeName = "weatherIconUrl" then 
       wIcon = "<img class='wIcon' src=" & x.item(0).childNodes(i).text & " height=45 width=45>" 
      end if 
     next    
     currentWeather = "<div id='curWeather'><span class='city'>" & city & "</span>" & wIcon & "<div class='tempC'>" & tempC & "<br />" & wDesc & "</div>" & "<a href='#' class='clrWeather' title='Clear weather information'><img src='images/clrweather.gif' alt='Clear weather information' /></a><div style='clear: both;'> </div></div>" 
     'Extended weather 
     extWeather = "<div class='extWeather'>" 
     set y = objXML.getElementsByTagName("weather") 
     for i = 0 to y.length - 1 
      for j = 0 to y.item(i).childNodes.length - 1 
       select case y.item(i).childNodes(j).nodeName 
        Case "date" 
         wDate = y.item(i).childNodes(j).text 
         wDate = "<div class='ewDate'>" & WeekdayName(Weekday(wDate), true) & "</div>" 
        Case "weatherDesc" 
         wDesc = "<div class='ewDesc'>" & y.item(i).childNodes(j).text & "</div>" 
        Case "weatherIconUrl" 
         wIcon = "<img class='ewIcon' src=" & y.item(i).childNodes(j).text & " height=20 width=20>" 
        Case "tempMaxC" 
         wHigh = y.item(i).childNodes(j).text & "&deg;" 
        Case "tempMinC" 
         wLow = y.item(i).childNodes(j).text & "&deg;"     
       end select 
      next  
      extWeather = extWeather & "<div class='extCol'>" & wDate & wIcon & "<div class='wHigh'>" & wHigh & "/" & wLow & "</div>" & wDesc & "</div>" 
     next 
     extWeather = extWeather & "<div style='clear: both;'></div></div>" 
     retStr = currentWeather & extWeather 
    end if 

    set objXML = nothing  
    set xmlhttp = nothing 

    getweather = retStr 

End function 

Function getCities 
    getCities = "<option value=-1>Select city for weather info</option>" & _ 
          "<optgroup label='ONTARIO'><option value='BARRIE'>BARRIE</option>" & _ 
          "<option value='BRAMPTON'>BRAMPTON</option>" & _ 
          "<option value='CAMBRIDGE'>CAMBRIDGE</option><option value='HAMILTON'>HAMILTON</option><option value='KINGSTON'>KINGSTON</option><option value='LONDON'>LONDON</option><option value='ORILLIA'>ORILLIA</option><option value='OTTAWA'>OTTAWA</option><option value='OWEN SOUND'>OWEN SOUND</option><option value='PETERBOROUGH'>PETERBOROUGH</option><option value='SOUTH PORCUPINE'>SOUTH PORCUPINE</option><option value='SAINT CATHARINES'>ST. CATHARINES</option><option value='SUDBURY'>SUDBURY</option><option value='THUNDER BAY'>THUNDER BAY</option><option value='TIMMINS'>TIMMINS</option><option value='WINDSOR'>WINDSOR</option><optgroup label='NEWFOUNDLAND & LABRADOR'><option value='CORNER *'>CORNER *</option>" 

End Function 


%> 
+3

请阅读如何正确问问题FAQ。您没有提供任何有助于任何人回答此问题的代码或背景信息。请编辑并提供详细信息。 –

+0

哪些图标,并改成什么? – SearchAndResQ

你有两个选择:要么得到的气象数据,XML,你自己分析它,并构建自己的设计,或操纵原始的HTML字符串本身,免去根据图像名称所需的图像与您自己的图像。

我会给第二个选项的代码示例。首先,检查所有可能的图标的名称(例如,获取不同天气的不同城市的天气,直到你全部获得)并保存它。然后,为每个图标,找到你自己的并将其保存在具有相同名称的服务器中。

到这一点,下面的代码应该做的伎俩:

Sub ReplaceIcons(ByRef rawHTML) 
    Const imagesFolder = "images/" 
    Dim arrImageNames, arrTemp, x 
    Dim curSrc, y, curImageName 
    arrImageNames = Array("black_low_cloud.png", "cloudy_with_light_snow.png") 
    arrTemp = GetBetween(rawHTML, "src=", " ") 
    For x=0 To UBound(arrTemp) 
     curSrc = LCase(arrTemp(x)) 
     If Right(curSrc, 3)="png" Then 
      For y=0 To UBound(arrImageNames) 
       curImageName = arrImageNames(y) 
       If InStr(curSrc, curImageName)>0 Then 
        rawHTML = Replace(rawHTML, "src=" & curSrc & " ", "src=""" & imagesFolder & curImageName & """ ") 
       End If 
      Next 
     End If 
    Next 
    Erase arrTemp 
End Sub 

Function GetBetween(str, leftDelimeter, rightDelimeter) 
     Dim tmpArr, result(), x 
     tmpArr=Split(str, leftDelimeter) 
     If UBound(tmpArr) < 1 Then 
      GetBetween=Array() : Exit Function 
     End If 
     ReDim result(UBound(tmpArr)-1) 
     For x=1 To UBound(tmpArr) 
      result(x-1)=(Split(tmpArr(x), rightDelimeter))(0) 
     Next 
     Erase tmpArr 
     GetBetween=result 
End Function 

这仅仅是一个例子更换两个图标。如果您的服务器上的图像坐在一个子文件夹中,将其放在imagesFolder中,否则将其保留为空。在arrImageNames中放置了所有可能的图标。

使用上述,返回HTML之前叫它:

'... 
set objXML = nothing  
set xmlhttp = nothing 

Call ReplaceIcons(retStr) 

getweather = retStr