我正在制作Windows手机程序,它将从xml文件中获取天气数据并在屏幕上显示。但是,我一直得到空值,我不确定我做错了什么。
示例XML文件:http://forecast.weather.gov/MapClick.php?lat=44.52160&lon=-87.98980&FcstType=dwml
这就是我所拥有的:
try
{
// get the stream containing the response from the async call
streamResult = forecastState.AsyncResponse.GetResponseStream();
// load the XML
XElement xmlWeather = XElement.Load(streamResult);
// find the source element
XElement xmlCurrent = xmlWeather.Descendants("source").First();
// get city and height
xmlCurrent = xmlWeather.Descendants("location").First();
mTempCityName = (string)(xmlCurrent.Element("city"));
mTempHeight = (int)(xmlCurrent.Element("height"));
//Find the forecast time
xmlCurrent = xmlWeather.Descendants("time-layout").First();
//store time of day in array
mTimeOfDay = (string)(xmlCurrent.Attribute("period-name"));
//Find the temperature
xmlCurrent = xmlWeather.Descendants("temperature").First();
mTemp = (int)(xmlCurrent.Element("value"));
//now get the current weather conditions for each time period
xmlCurrent = xmlWeather.Descendants("weather").First();
mDescription = (string)(xmlCurrent.Attribute("weather-summary"));
//now get icon links for weather
xmlCurrent = xmlWeather.Descendants("conditions-icon").First();
mIcon = (string)(xmlCurrent.Attribute("icon-link"));
}
答案 0 :(得分:2)
好:
time-layout
没有名为period-name
的属性(它包含具有该属性的子元素)weather
没有weather-summary
属性 - 它包含具有该属性的子元素conditions-icon
没有icons-link
属性,它有icons-link
个元素换句话说,对于每个位,您需要准确查看XML包含的内容,然后确切地了解您要求的内容,小心区分元素和属性。
请注意,对于要转换为int
的值(它们不需要额外的括号,顺便说一下),在这种情况下你应该得到一个异常 - 你显然无法获得实际的null值。是否可能抛出异常并且您没有注意到它?你的拦截块里有什么?