2009-07-07 2 views
0

Я получил этот код:XLinq - Лучший способ

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 («низкий»). Элемент («Цельсия»). Соотношение частей, так что Элемент(). Элемент() - это один элемент().

Вот образец 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

Вы можете использовать XElement.XPathSelectElements("xpathExpression"), если хотите сделать это более сжато, но нет ничего плохого в том, что вы сделали.

Ваш код более подробный и более удобный для чтения.

+0

Спасибо за ваш ответ! – 2009-07-07 12:28:08

1

Вы должны рассмотреть возможность использования сериализации десериализации объекта DayForcast из этого фрагмента XML.

+0

Я думаю, что OP хочет знать способ LINQ этого сделать. –

+0

Привет, спасибо за ответ. Результат из RSS-канала, который я не могу получить для сериализации ... Я ОЧЕНЬ незнаком с сериализацией. – 2009-07-07 11:14:26