小编典典

将WSDL对象获取到SQL数据库中

sql

因此,我不想问这个问题,但是在搜索和尝试编码的最后10个小时中,却什么都没发现。

我有一个附有SQL数据库的Visual Studio项目。我需要将数据从Google Weather Service API提取到sql表中。

Webservice调用是对此站点的google api调用

以及其他几个站点,例如AccuWeather和NOAA,以显示这三个站点之间的差异。该项目的目标是查看数据是否相对相同,或者是否使用了不同的气象站,如果这样做,则会导致向用户报告天气的方式产生重大差异。

我所缺少的是该对象的解释器,它可以让我将temp,湿度等信息放入sql表中

有人做过此事并且有一些提示或参考吗?


阅读 229

收藏
2021-04-15

共1个答案

小编典典

这是使用Linq to XML解析响应的方法

实时示例:http :
//balexandre.com/stackoverflow/7789623/

该链接还包括源代码,但是使用Linq到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文档的难易程度。

2021-04-15