Asp classic 使用经典ASP设置Google天气扩展预测

Asp classic 使用经典ASP设置Google天气扩展预测,asp-classic,Asp Classic,只是一点背景,我们的营销部门一直在他们的标牌上使用静态天气图像,并询问是否有可能拉一些实时更新的东西。因为我是我们部门唯一一个有任何编程经验的人,而且我充其量只是个新手,所以我被要求想出一个解决方案。在过去,我曾与classic asp合作过几个其他的小项目,所以我决定走这条路。除扩展预测数据外,我的一切都按我所希望的方式运行。在下面的示例中,我有一些变量,我想用For语句显示这些变量,以提取每天的扩展预测xml数据。但出于某种原因,它只是在延长预测的最后一天才开始 If (objXMLDOM.

只是一点背景,我们的营销部门一直在他们的标牌上使用静态天气图像,并询问是否有可能拉一些实时更新的东西。因为我是我们部门唯一一个有任何编程经验的人,而且我充其量只是个新手,所以我被要求想出一个解决方案。在过去,我曾与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
If(objXMLDOM.parseError.errorCode 0)则
Response.Write(“解析XML时出错:”&objXMLDOM.parseError.reason&“

”) 其他的 对于i=0到3 设置objFuture=objXMLDOM.getElementsByTagName(“预测_条件”)。项(i)“将每个项的XML节点从1拉到3 对于通过dom树的objFuture.childNodes循环中的每个xmlNode 如果(xmlNode.nodeName=“icon”),则 strIcon1=”“&vbCrLf 如果结束 如果(xmlNode.nodeName=“条件”),则 strCondition1=xmlNode.Attributes.getNamedItem(“数据”).text&vbCrLf 如果结束 如果是(xmlNode.nodeName=“低”),则 strLow=xmlNode.Attributes.getNamedItem(“数据”).text&vbCrLf 如果结束 如果是(xmlNode.nodeName=“高”),则 strHigh=xmlNode.Attributes.getNamedItem(“数据”).text&vbCrLf 如果结束 如果(xmlNode.nodeName=“一周中的第二天”),则 strDay=xmlNode.Attributes.getNamedItem(“数据”).text&vbCrLf 如果结束 设置objFuture=nothing 下一个 下一个 如果结束
然后,我用以下代码将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 %>


我已经断断续续地看了好几天了,但似乎找不到我每天都要做的事情,而不仅仅是最后一件。如果有人有任何建议,我将不胜感激

您正在使用同一组变量来存储每天的预测数据。因此,在
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
If(objXMLDOM.parseError.errorCode 0)则
Response.Write(“解析XML时出错:”&objXMLDOM.parseError.reason&“

”) 其他的 对于i=0到3 设置objFuture=objXMLDOM.getElementsByTagName(“预测条件”)。项(i) 对于objFuture.childNodes中的每个xmlNode ... 下一个 “写到这里 回答。写(“&strDay&”
“&strIcon1&”
“&strcon1&”
“&strcon1&”&strcon条件1&“
”和“低:&strLow&°;F”&
”和“高:&strHigh&°;F”&
”) 下一个 如果结束
谢谢Jon!这解决了我的问题!我感谢你的帮助!