使用经典ASP设置Google天气预报

时间:2012-04-20 15:23:30

标签: asp-classic

只是一点点背景,我们的营销部门一直在他们的标牌上使用静态天气图像,并询问是否可以实时更新一些内容。由于我是我们部门中唯一具有任何类型编程经验的人,而且我是最好的新手,因此我被要求提出解决方案。我过去曾与经典的asp合作完成了其他几个小项目,所以我决定走这条路。除了扩展的预测数据之外,我的一切都按照我想要的方式运行。在下面的示例中,我有一些变量,我希望使用For语句显示每天的扩展预测xml数据。但由于某种原因,它只是拉动了延长预测的最后一天。

If (objXMLDOM.parseError.errorCode <> 0) Then
Response.Write("<p>Error parsing XML: " & objXMLDOM.parseError.reason & "</p>")
Else
  For i = 0 to 3  
    Set objFuture = objXMLDOM.getElementsByTagName("forecast_conditions").Item(i) 'pull the XML node for each from one to three
    For Each xmlNode In objFuture.childNodes 'loop through the dom tree
        If (xmlNode.nodeName = "icon") Then
            strIcon1 = "<img src=""http://www.google.com" & xmlNode.Attributes.getNamedItem("data").text & """ border=""0"">" & vbCrLf
         End If
        If (xmlNode.nodeName = "condition") Then
            strCondition1 = xmlNode.Attributes.getNamedItem("data").text & vbCrLf
         End If
        If (xmlNode.nodeName = "low") Then
            strLow = xmlNode.Attributes.getNamedItem("data").text & vbCrLf
         End If 
        If (xmlNode.nodeName = "high") Then
            strHigh = xmlNode.Attributes.getNamedItem("data").text & vbCrLf
         End If     
        If (xmlNode.nodeName = "day_of_week") Then
            strDay = xmlNode.Attributes.getNamedItem("data").text & vbCrLf
         End If     
     Set objFuture = nothing    
    Next    
Next
End if

然后我使用以下代码将4天预测输出到我的主页:

<%For Each Item in objXMLDOM.getElementsByTagName("forecast_conditions")
  Response.Write ("<td>" & strDay  & "<br>" & strIcon1 & "<br>" & strCondition1   & "<br>" & "Low:&nbsp" & strLow & "&deg;F" & "<br>" & "High:&nbsp" & strHigh & "&deg;F" & "<br>" & "</td>")
 Next %>

我一直在关注这个问题几天,而且似乎无法找到我每天缺少的东西而不是最后一天。如果有人有任何建议我会很感激!

1 个答案:

答案 0 :(得分:1)

您使用相同的变量集来存储每天的预测数据。因此,在for循环的每次迭代中,您都会覆盖前一天的信息。

解决方案是将第一个for循环内部将数据写入屏幕的代码移动,如下所示:

If (objXMLDOM.parseError.errorCode <> 0) Then
    Response.Write("<p>Error parsing XML: " & objXMLDOM.parseError.reason & "</p>")
Else
    For i = 0 to 3  
        Set objFuture = objXMLDOM.getElementsByTagName("forecast_conditions").Item(i) 
        For Each xmlNode In objFuture.childNodes

            ...

        Next 

        ' Write to the page here
        Response.Write ("<td>" & strDay  & "<br>" & strIcon1 & "<br>" & strCondition1   & "<br>" & "Low:&nbsp" & strLow & "&deg;F" & "<br>" & "High:&nbsp" & strHigh & "&deg;F" & "<br>" & "</td>")

    Next
End if