Проблема десериализации xml с использованием datacontractserializer - PullRequest
0 голосов
/ 22 апреля 2020

У меня десериализация с использованием xmlserializer, но с datacontract у меня нет идеи, мне нужно десериализовать с Datacontract Как десериализовать с datacontract это wather api. Когда я десериализирую с помощью XmlSerializer, он работает как на фотографии

, используя XmlSerializer, работа выглядит в изображении

Но когда я использую DataContract, не работает

посмотрите, когда я использую DataContract у меня есть исключение

Это код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
using System.Xml;
using RestSharp;
using RestSharp.Deserializers;
using System.IO;
using System.Xml.Serialization;

namespace DataContractd
{


    class Program
    {
        const string URL = "http://api.worldweatheronline.com/premium/v1/weather.ashx?key=c37f984779f14beb9bf01943201104&q=Pristina&num_of_days=5";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(URL);
            DataContractSerializer serializer = new DataContractSerializer(typeof(data));
            data data = (data)serializer.ReadObject(reader);

            Console.WriteLine(data.request.query);
        }
    }
    public class data
    {
        public request request { get; set; }
        public current_condition current_condition { get; set; }
        public weather weather { get; set; }
    }
    public class request
    {
        [XmlElement("type")]
        public string _type { get; set; }
        public string query { get; set; }
    }
    public class current_condition
    {
        public TimeSpan observation_time { get; set; }
        public int temp_C { get; set; }
        public int temp_F { get; set; }
        public int weatherCode { get; set; }
        public string weatherIconUrl { get; set; }
        public string weatherDesc { get; set; }
        public int windspeedMiles { get; set; }
        public int windspeedKmph { get; set; }
        public int winddirDegree { get; set; }
        public string winddir16Point { get; set; }
        public decimal precipMM { get; set; }
        public decimal precipInches { get; set; }
        public int humidity { get; set; }
        public int visibility { get; set; }
        public int visibilityMiles { get; set; }
        public int pressure { get; set; }
        public int pressureInches { get; set; }
        public int cloudcover { get; set; }
        public int FeelsLikeC { get; set; }
        public int FeelsLikeF { get; set; }
        public int uvIndex { get; set; }
    }

    public class weather
    {
        public DateTime date { get; set; }
        public astronomy astronomy { get; set; }
        public int maxtempC { get; set; }
        public int maxtempF { get; set; }
        public int mintempC { get; set; }
        public int mintempF { get; set; }
        public int avgtempC { get; set; }
        public int avgtempF { get; set; }
        public decimal totalSnow_cm { get; set; }
        public decimal sunHour { get; set; }
        public int uvIndex { get; set; }
        [XmlElement("hourly")]
        public List<hourly> hourly { get; set; }
    }
    public class astronomy
    {
        public TimeSpan sunrise { get; set; }
        public TimeSpan sunset { get; set; }
        public TimeSpan moonrise { get; set; }
        public TimeSpan moonset { get; set; }
        public string moon_phase { get; set; }
        public int moon_illumination { get; set; }
    }
    public class hourly
    {
        public int time { get; set; }
        public int tempC { get; set; }
        public int tempF { get; set; }
        public int windspeedMiles { get; set; }
        public int windspeedKmph { get; set; }
        public int winddirDegree { get; set; }
        public string winddir16Point { get; set; }
        public int weatherCode { get; set; }
        public string weatherIconUrl { get; set; }
        public string weatherDesc { get; set; }
        public decimal precipMM { get; set; }
        public decimal precipInches { get; set; }
        public int humidity { get; set; }
        public int visibility { get; set; }
        public int visibilityMiles { get; set; }
        public int pressure { get; set; }
        public int pressureInches { get; set; }
        public int cloudcover { get; set; }
        public int HeatIndexC { get; set; }
        public int HeatIndexF { get; set; }
        public int DewPointC { get; set; }
        public int DewPointF { get; set; }
        public int WindChillC { get; set; }
        public int WindChillF { get; set; }
        public int WindGustMiles { get; set; }
        public int WindGustKmph { get; set; }
        public int FeelsLikeC { get; set; }
        public int FeelsLikeF { get; set; }
        public int chanceofrain { get; set; }
        public int chanceofremdry { get; set; }
        public int chanceofwindy { get; set; }
        public int chanceofovercast { get; set; }
        public int chanceofsunshine { get; set; }
        public int chanceoffrost { get; set; }
        public int chanceofhightemp { get; set; }
        public int chanceoffog { get; set; }
        public int chanceofsnow { get; set; }
        public int chanceofthunder { get; set; }
        public int uvIndex { get; set; }
    }
}
...