我有这段代码:
XDocument xdoc = XDocument.Load(URI);
XElement root = xdoc.Element("forecast");
//get the values into objects
forecast = from fc in root.Descendants("simpleforecast").Elements("forecastday")
select new DayForcast
{
Date = new DateTime(int.Parse(fc.Element("date").Element("year").Value),
int.Parse(fc.Element("date").Element("month").Value),
int.Parse(fc.Element("date").Element("day").Value)),
Condition = fc.Element("conditions").Value,
Max = double.Parse(fc.Element("high").Element("celsius").Value),
Min = double.Parse(fc.Element("low").Element("celsius").Value),
Icon = fc.Element("icon").Value,
SkyIcon = fc.Element("skyicon").Value
};
虽然这样做了我想要的,但我想知道是否有更好的方法来执行fc.Element(“low”)。Element(“celsius”)。值部分,以便Element()。元素()是一个元素()。
以下是XML示例:
<?xml version="1.0" ?>
<forecast>
<termsofservice link="http://www.wunderground.com/members/tos.asp#api" />
<txt_forecast>
<date />
<number />
</txt_forecast>
<simpleforecast>
<forecastday>
<period>1</period>
<date>
<day>7</day>
<month>7</month>
<year>2009</year>
<yday>187</yday>
<hour>22</hour>
</date>
<high>
<fahrenheit>63</fahrenheit>
<celsius>17</celsius>
</high>
<low>
<fahrenheit>54</fahrenheit>
<celsius>12</celsius>
</low>
<conditions>Thunderstorm</conditions>
<icon>tstorms</icon>
<skyicon>cloudy</skyicon>
由于
答案 0 :(得分:1)
您应该考虑使用序列化从此xml片段反序列化DayForcast对象。
答案 1 :(得分:0)
如果您想更简洁地使用XElement.XPathSelectElements("xpathExpression"),可以使用{{3}},但您所做的事情并没有错。
您的代码更详细,更易于阅读。