只是一点点背景,我们的营销部门一直在他们的标牌上使用静态天气图像,并询问是否可以实时更新一些内容。由于我是我们部门中唯一具有任何类型编程经验的人,而且我是最好的新手,因此我被要求提出解决方案。我过去曾与经典的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: " & strLow & "°F" & "<br>" & "High: " & strHigh & "°F" & "<br>" & "</td>")
Next %>
我一直在关注这个问题几天,而且似乎无法找到我每天缺少的东西而不是最后一天。如果有人有任何建议我会很感激!
答案 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: " & strLow & "°F" & "<br>" & "High: " & strHigh & "°F" & "<br>" & "</td>")
Next
End if