Получить объект WSDL в базу данных SQL - PullRequest
0 голосов
/ 17 октября 2011

Так что я ненавижу спрашивать об этом, но последние 10 часов поиска и попыток кодирования ничего не дали.

У меня есть проект Visual Studio с прикрепленной базой данных SQL. Мне нужно вытащить данные из API службы погоды Google в таблицу SQL.

Вызов на веб-сервис для этого сайта Google Api Call

А также пара других сайтов, таких как accuweather и NOAA, чтобы показать различия между ними. Цель проекта состоит в том, чтобы увидеть, являются ли данные относительно одинаковыми или используются разные метеостанции, и если это так, то это вызывает существенную разницу в том, как погода сообщается пользователю.

Что мне не хватает, так это интерпретатор объекта, который может позволить мне поместить temp, влажность в таблицу sql

Кто-нибудь делал это раньше и есть какие-нибудь советы или рекомендации?

1 Ответ

1 голос
/ 17 октября 2011

Вот как вы можете проанализировать ответ, используя Linq для XML

Live Пример: http://balexandre.com/stackoverflow/7789623/

Ссылка также включает в себя исходный код, но анализиспользовать Linq to XML быстро, весело и чрезвычайно просто:

private GoogleWheatherInfo parseGoogleWeatherResponse(string url)
{
    GoogleWheatherInfo gw = new GoogleWheatherInfo();

    // get the XML
    XDocument doc = XDocument.Load(url);

    // parse data
    gw.ForecastInformation = (from x in doc.Descendants("forecast_information")
                              select new GWForecastInfo
                              {
                                  City = x.Descendants("city").First().Attribute("data").Value,
                                  PostalCode = x.Descendants("postal_code").First().Attribute("data").Value,
                                  Latitude = long.Parse(string.IsNullOrEmpty(x.Descendants("latitude_e6").First().Attribute("data").Value) ? "0" : x.Descendants("latitude_e6").First().Attribute("data").Value),
                                  Longitude = long.Parse(string.IsNullOrEmpty(x.Descendants("longitude_e6").First().Attribute("data").Value) ? "0" : x.Descendants("longitude_e6").First().Attribute("data").Value),
                                  ForecastDate = DateTime.ParseExact(x.Descendants("forecast_date").First().Attribute("data").Value, "yyyy-MM-dd", CultureInfo.InvariantCulture),
                                  CurrentDate = DateTime.ParseExact(x.Descendants("current_date_time").First().Attribute("data").Value, "yyyy-MM-dd HH:mm:ss K", CultureInfo.InvariantCulture),
                                  UnitSystem = x.Descendants("unit_system").First().Attribute("data").Value
                              }).Single();

    gw.CurrentCondition = (from x in doc.Descendants("current_conditions")
                           select new GWCurrentCondition
                           {
                               Condition = x.Descendants("condition").First().Attribute("data").Value,
                               TemperatureC = long.Parse(x.Descendants("temp_c").First().Attribute("data").Value),
                               TemperatureF = long.Parse(x.Descendants("temp_f").First().Attribute("data").Value),
                               Humidity = x.Descendants("humidity").First().Attribute("data").Value,
                               Image = x.Descendants("icon").First().Attribute("data").Value,
                               Wind = x.Descendants("wind_condition").First().Attribute("data").Value
                           }).Single();

    gw.ForecastConditions = (from x in doc.Descendants("forecast_conditions")
                             select new GWForecastCondition
                             {
                                 DayOfWeek = x.Descendants("day_of_week").First().Attribute("data").Value,
                                 Low = double.Parse(x.Descendants("low").First().Attribute("data").Value),
                                 High = double.Parse(x.Descendants("high").First().Attribute("data").Value),
                                 Image = x.Descendants("icon").First().Attribute("data").Value,
                                 Condition = x.Descendants("condition").First().Attribute("data").Value,
                             }).ToList();

    return gw;
}

Я надеюсь, что это даст вам некоторые знания о том, как легко разобрать любой XML-документ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...