Hiya,
I'm slowly getting to grips with XML files and I'm trying to read a weather xml feed. I'm struggling with elements that are called the same (weather). I want to read bits into strings.
OK, here's a copy of the xml
Now it has 5 elements all called weather. So I've used this code...
But all the weathercon's are the same value so I'm missing something. When I do nodes.count it says 5 so I know it's populated correctly. The other problem is I can't debug as it's part of a dll.
thanks,
Steve
I'm slowly getting to grips with XML files and I'm trying to read a weather xml feed. I'm struggling with elements that are called the same (weather). I want to read bits into strings.
OK, here's a copy of the xml
VB.NET:
-<data><request><type>LatLon</type><query>Lat -0.13 and Lon 51.51</query></request><current_condition><observation_time>08:42 AM</observation_time><temp_C>30</temp_C><temp_F>85</temp_F><weatherCode>113</weatherCode><weatherIconUrl>http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png</weatherIconUrl><weatherDesc>Sunny</weatherDesc><windspeedMiles>15</windspeedMiles><windspeedKmph>24</windspeedKmph><winddirDegree>144</winddirDegree><winddir16Point>SE</winddir16Point><precipMM>0.1</precipMM><humidity>76</humidity><visibility>10</visibility><pressure>1011</pressure><cloudcover>22</cloudcover></current_condition><weather><date>2012-10-12</date><tempMaxC>30</tempMaxC><tempMaxF>86</tempMaxF><tempMinC>26</tempMinC><tempMinF>78</tempMinF><windspeedMiles>22</windspeedMiles><windspeedKmph>35</windspeedKmph><winddirection>SE</winddirection><winddir16Point>SE</winddir16Point><winddirDegree>134</winddirDegree><weatherCode>116</weatherCode><weatherIconUrl>http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0002_sunny_intervals.png</weatherIconUrl><weatherDesc>Partly Cloudy </weatherDesc><precipMM>1.2</precipMM></weather><weather><date>2012-10-13</date><tempMaxC>29</tempMaxC><tempMaxF>85</tempMaxF><tempMinC>26</tempMinC><tempMinF>78</tempMinF><windspeedMiles>14</windspeedMiles><windspeedKmph>23</windspeedKmph><winddirection>SSE</winddirection><winddir16Point>SSE</winddir16Point><winddirDegree>165</winddirDegree><weatherCode>116</weatherCode><weatherIconUrl>http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0002_sunny_intervals.png</weatherIconUrl><weatherDesc>Partly Cloudy </weatherDesc><precipMM>0.3</precipMM></weather><weather><date>2012-10-14</date><tempMaxC>29</tempMaxC><tempMaxF>84</tempMaxF><tempMinC>25</tempMinC><tempMinF>77</tempMinF><windspeedMiles>13</windspeedMiles><windspeedKmph>22</windspeedKmph><winddirection>SSE</winddirection><winddir16Point>SSE</winddir16Point><winddirDegree>158</winddirDegree><weatherCode>116</weatherCode><weatherIconUrl>http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0002_sunny_intervals.png</weatherIconUrl><weatherDesc>Partly Cloudy </weatherDesc><precipMM>5.5</precipMM></weather><weather><date>2012-10-15</date><tempMaxC>27</tempMaxC><tempMaxF>80</tempMaxF><tempMinC>25</tempMinC><tempMinF>78</tempMinF><windspeedMiles>10</windspeedMiles><windspeedKmph>16</windspeedKmph><winddirection>SSE</winddirection><winddir16Point>SSE</winddir16Point><winddirDegree>149</winddirDegree><weatherCode>353</weatherCode><weatherIconUrl>http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0009_light_rain_showers.png</weatherIconUrl><weatherDesc>Light rain shower</weatherDesc><precipMM>15.4</precipMM></weather><weather><date>2012-10-16</date><tempMaxC>28</tempMaxC><tempMaxF>82</tempMaxF><tempMinC>26</tempMinC><tempMinF>78</tempMinF><windspeedMiles>3</windspeedMiles><windspeedKmph>5</windspeedKmph><winddirection>WSW</winddirection><winddir16Point>WSW</winddir16Point><winddirDegree>237</winddirDegree><weatherCode>116</weatherCode><weatherIconUrl>http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0002_sunny_intervals.png</weatherIconUrl><weatherDesc>Partly Cloudy </weatherDesc><precipMM>0.1</precipMM></weather></data>
Now it has 5 elements all called weather. So I've used this code...
VB.NET:
xml = webclient.DownloadString("http://free.worldweatheronline.com/feed/weather.ashx?q=" & lat & "," & lon & "&format=xml&num_of_days=5&key=removedthekey")
DataXml.LoadXml(xml)
With newweather
.wind = DataXml.DocumentElement.SelectSingleNode("//data/current_condition/windspeedMiles").InnerText
.winddirection = DataXml.DocumentElement.SelectSingleNode("//data/current_condition/winddir16Point").InnerText
.humidity = DataXml.DocumentElement.SelectSingleNode("//data/current_condition/humidity").InnerText
.visibility = DataXml.DocumentElement.SelectSingleNode("//data/current_condition/visibility").InnerText
.weathercon = DataXml.DocumentElement.SelectSingleNode("//data/current_condition/weatherDesc").InnerText
Dim nodes As XmlNodeList = DataXml.DocumentElement.SelectNodes("//data/weather")
.weathercon1 = nodes(1).SelectSingleNode("//weatherDesc").InnerText
.weathercon2 = nodes(2).SelectSingleNode("//weatherDesc").InnerText
.weathercon3 = nodes(3).SelectSingleNode("//weatherDesc").InnerText
.weathercon4 = nodes(4).SelectSingleNode("//weatherDesc").InnerText
End With
But all the weathercon's are the same value so I'm missing something. When I do nodes.count it says 5 so I know it's populated correctly. The other problem is I can't debug as it's part of a dll.
thanks,
Steve