0

只是一点背景,我们的营销部门一直在他们的标牌上使用静态天气图像,并询问是否可以提取实时更新的内容。由于我是我们部门中唯一具有任何类型编程经验的人,而且我充其量只是个新手,因此我被要求提出解决方案。过去我曾在其他几个小项目中使用过经典 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 %>

我已经断断续续地看了几天了,似乎无法找到我每天缺少的东西,而不是最后一个。如果有人有任何建议,我将不胜感激!

4

1 回答 1

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
于 2012-04-20T15:51:02.327 回答