Loop through xml, get child, insert it into xml



This C# code produces the xml that is provided under it. But I can not get the string iconcode1 to work. The string iconcode1 line throws the following error.



Object reference not set to an instance of an object



I am trying to grab every other iconCode which is the daytime iconcode for the image i need for the forecast. I want to loop through grab the icon code format it and insert it into the xml like i have attempted below.


If you have any other ways to do this I would appreciate the help!



XDocument xFore;
if (createFile2)
{
string forecastUrl = "http://ift.tt/Wx8KjF" + lat + "," + lon + "&locationtype=latitudelongitude&units=english&cultureinfo=en-en>&verbose=true&access_token=" + token;
var source = client.DownloadString(forecastUrl);
JObject jo = JObject.Parse(source);
XNode xNode = JsonConvert.DeserializeXNode(jo.ToString(), "forecast");
xFore = XDocument.Parse(xNode.ToString());

Int32 result1;
string iconcode1 = xFore.Root.Element("dailyForecastPeriods/iconCode").Value;
Int32.TryParse(iconcode1, out result1);

string iconFilename2 = "cond" + string.Format("{0:00#}", result1) + ".png";



DayOfWeek day = DateTime.Now.DayOfWeek;
DayOfWeek day1 = (DayOfWeek)((byte)(day + 1) % 7);
DayOfWeek day2 = (DayOfWeek)((byte)(day1 + 1) % 7);
DayOfWeek day3 = (DayOfWeek)((byte)(day2 + 1) % 7);
DayOfWeek day4 = (DayOfWeek)((byte)(day3 + 1) % 7);
DayOfWeek day5 = (DayOfWeek)((byte)(day4 + 1) % 7);
DayOfWeek day6 = (DayOfWeek)((byte)(day5 + 1) % 7);
DayOfWeek day7 = (DayOfWeek)((byte)(day6 + 1) % 7);

xFore.Root.Add(new XElement("day", day),
new XElement("day1", day1),
new XElement("day2", day2),
new XElement("day3", day3),
new XElement("day4", day4),
new XElement("day5", day5),
new XElement("day6", day6),
new XElement("day7", day7),
new XElement("img_small", weatherImages + @"Small/" + iconFilename2),
new XElement("img_large", weatherImages + @"Large/" + iconFilename2));


if (xFore.XPathSelectElement("/error") == null) xFore.Save(foreFilename);
}
else
{
xFore = XDocument.Load(foreFilename);
}

XElement xCurrElem = XElement.Parse(xCurr.Root.ToString());
XElement xForeElem = XElement.Parse(xFore.Root.ToString());
weatherDoc.Root.Add(xCurrElem);
weatherDoc.Root.Add(xForeElem);


XML:



<forecast>
<dailyForecastPeriods>
<cloudCoverPercent>90</cloudCoverPercent>
<dewPoint>64.4</dewPoint>
<iconCode>6</iconCode>
<precipCode>1</precipCode>
<precipProbability>75</precipProbability
><relativeHumidity>72</relativeHumidity><summaryDescription>Thunderstorms</summaryDescription>
<temperature>79.1</temperature>
<thunderstormProbability>70</thunderstormProbability><windDirectionDegrees>282</windDirectionDegrees>
<windSpeed>2.2</windSpeed>
<detailedDescription>Showers and thunderstorms likely. Highs in the upper 70s. West winds around 5 mph. Chance of rain 70 percent. </detailedDescription><forecastDateLocalStr>2014-08-05T07:00:00</forecastDateLocalStr><forecastDateUtcStr>2014-08-05T11:00:00Z</forecastDateUtcStr><isNightTimePeriod>false</isNightTimePeriod>
</dailyForecastPeriods>
<dailyForecastPeriods>
<cloudCoverPercent>62</cloudCoverPercent>
<dewPoint>62.6</dewPoint>
<iconCode>18</iconCode>
<precipCode>1</precipCode>
<precipProbability>55</precipProbability>
<relativeHumidity>81</relativeHumidity><summaryDescription>Thunderstorms</summaryDescription>
<temperature>64</temperature>
<thunderstormProbability>50</thunderstormProbability><windDirectionDegrees>24</windDirectionDegrees>
<windSpeed>2.2</windSpeed>
<detailedDescription>Mostly cloudy. Showers and thunderstorms likely... Mainly in the evening. Lows in the lower 60s. Northeast winds around 5 mph. Chance of rain 70 percent. </detailedDescription>
<forecastDateLocalStr>2014-08-05T19:00:00</forecastDateLocalStr><forecastDateUtcStr>2014-08-05T23:00:00Z</forecastDateUtcStr><isNightTimePeriod>true</isNightTimePeriod>
</dailyForecastPeriods>
<dailyForecastPeriods>
<cloudCoverPercent>87</cloudCoverPercent>
<dewPoint>59</dewPoint>
<iconCode>93</iconCode>
<precipCode>1</precipCode>
<precipProbability>55</precipProbability>
<relativeHumidity>67</relativeHumidity>
<summaryDescription>30% Chance of Storms</summaryDescription><temperature>76.9</temperature>
<thunderstormProbability>40</thunderstormProbability><windDirectionDegrees>38</windDirectionDegrees>
<windSpeed>6.7</windSpeed>
<detailedDescription>Partly cloudy. A chance of showers and thunderstorms in the morning. Highs in the upper 70s. Northeast winds around 5 mph. Chance of rain 30 percent. </detailedDescription>
<forecastDateLocalStr>2014-08-06T07:00:00</forecastDateLocalStr><forecastDateUtcStr>2014-08-06T11:00:00Z</forecastDateUtcStr><isNightTimePeriod>false</isNightTimePeriod>
</dailyForecastPeriods>
<dailyForecastPeriods><cloudCoverPercent>55</cloudCoverPercent><dewPoint>55.4</dewPoint><iconCode>2</iconCode><precipCode>1</precipCode><precipProbability>0</precipProbability><relativeHumidity>67</relativeHumidity><summaryDescription>Partly Cloudy</summaryDescription><temperature>58.9</temperature><thunderstormProbability>0</thunderstormProbability><windDirectionDegrees>134</windDirectionDegrees><windSpeed>4.5</windSpeed><detailedDescription>Partly cloudy. Lows in the upper 50s. Northeast winds 5 to 10 mph. </detailedDescription><forecastDateLocalStr>2014-08-06T19:00:00</forecastDateLocalStr><forecastDateUtcStr>2014-08-06T23:00:00Z</forecastDateUtcStr><isNightTimePeriod>true</isNightTimePeriod></dailyForecastPeriods><dailyForecastPeriods><cloudCoverPercent>55</cloudCoverPercent><dewPoint>53.6</dewPoint><iconCode>3</iconCode><precipCode>1</precipCode><precipProbability>0</precipProbability><relativeHumidity>58</relativeHumidity><summaryDescription>Partly Cloudy</summaryDescription><temperature>79.1</temperature><thunderstormProbability>0</thunderstormProbability><windDirectionDegrees>49</windDirectionDegrees><windSpeed>4.5</windSpeed><detailedDescription>Partly cloudy. Highs in the upper 70s. East winds 5 to 10 mph. </detailedDescription><forecastDateLocalStr>2014-08-07T07:00:00</forecastDateLocalStr><forecastDateUtcStr>2014-08-07T11:00:00Z</forecastDateUtcStr><isNightTimePeriod>false</isNightTimePeriod></dailyForecastPeriods><dailyForecastPeriods><cloudCoverPercent>62</cloudCoverPercent><dewPoint>55.4</dewPoint><iconCode>2</iconCode><precipCode>1</precipCode><precipProbability>0</precipProbability><relativeHumidity>68</relativeHumidity><summaryDescription>Partly Cloudy</summaryDescription><temperature>58.9</temperature><thunderstormProbability>0</thunderstormProbability><windDirectionDegrees>93</windDirectionDegrees><windSpeed>4.5</windSpeed><detailedDescription>Partly cloudy. Lows in the upper 50s. </detailedDescription><forecastDateLocalStr>2014-08-07T19:00:00</forecastDateLocalStr><forecastDateUtcStr>2014-08-07T23:00:00Z</forecastDateUtcStr><isNightTimePeriod>true</isNightTimePeriod></dailyForecastPeriods>-<dailyForecastPeriods><cloudCoverPercent>20</cloudCoverPercent><dewPoint>59</dewPoint><iconCode>3</iconCode><precipCode>1</precipCode><precipProbability>0</precipProbability><relativeHumidity>70</relativeHumidity><summaryDescription>Partly Cloudy</summaryDescription><temperature>79.1</temperature><thunderstormProbability>0</thunderstormProbability><windDirectionDegrees>69</windDirectionDegrees><windSpeed>8.9</windSpeed><detailedDescription>Partly cloudy. Highs in the upper 70s. </detailedDescription><forecastDateLocalStr>2014-08-08T07:00:00</forecastDateLocalStr><forecastDateUtcStr>2014-08-08T11:00:00Z</forecastDateUtcStr><isNightTimePeriod>false</isNightTimePeriod></dailyForecastPeriods><dailyForecastPeriods><cloudCoverPercent>23</cloudCoverPercent><dewPoint>59</dewPoint><iconCode>2</iconCode><precipCode>1</precipCode><precipProbability>0</precipProbability><relativeHumidity>70</relativeHumidity><summaryDescription>Partly Cloudy</summaryDescription><temperature>60</temperature><thunderstormProbability>0</thunderstormProbability><windDirectionDegrees>66</windDirectionDegrees><windSpeed>8.9</windSpeed><detailedDescription>Partly cloudy. Lows around 60. </detailedDescription><forecastDateLocalStr>2014-08-08T19:00:00</forecastDateLocalStr><forecastDateUtcStr>2014-08-08T23:00:00Z</forecastDateUtcStr><isNightTimePeriod>true</isNightTimePeriod></dailyForecastPeriods><dailyForecastPeriods><cloudCoverPercent>22</cloudCoverPercent><dewPoint>59</dewPoint><iconCode>3</iconCode><precipCode>1</precipCode><precipProbability>0</precipProbability><relativeHumidity>66</relativeHumidity><summaryDescription>Partly Cloudy</summaryDescription><temperature>82</temperature><thunderstormProbability>0</thunderstormProbability><windDirectionDegrees>65</windDirectionDegrees><windSpeed>11.2</windSpeed><detailedDescription>Partly cloudy. Highs in the lower 80s. </detailedDescription><forecastDateLocalStr>2014-08-09T07:00:00</forecastDateLocalStr><forecastDateUtcStr>2014-08-09T11:00:00Z</forecastDateUtcStr><isNightTimePeriod>false</isNightTimePeriod></dailyForecastPeriods><dailyForecastPeriods><cloudCoverPercent>28</cloudCoverPercent><dewPoint>60.8</dewPoint><iconCode>2</iconCode><precipCode>1</precipCode><precipProbability>10</precipProbability><relativeHumidity>71</relativeHumidity><summaryDescription>Partly Cloudy</summaryDescription><temperature>63</temperature><thunderstormProbability>10</thunderstormProbability><windDirectionDegrees>79</windDirectionDegrees><windSpeed>8.9</windSpeed><detailedDescription>Partly cloudy. Lows in the lower 60s. </detailedDescription><forecastDateLocalStr>2014-08-09T19:00:00</forecastDateLocalStr><forecastDateUtcStr>2014-08-09T23:00:00Z</forecastDateUtcStr><isNightTimePeriod>true</isNightTimePeriod>
</dailyForecastPeriods>
<forecastCreatedUtcStr>2014-08-05T12:01:00Z</forecastCreatedUtcStr><location>US39T0014</location>
<locationType>city</locationType>
<day>Tuesday</day>
<day1>Wednesday</day1>
<day2>Thursday</day2>
<day3>Friday</day3>
<day4>Saturday</day4>
<day5>Sunday</day5>
<day6>Monday</day6>
<day7>Tuesday</day7>
</forecast>`

No comments:

Post a Comment