В настоящее время я пытаюсь десериализовать строку xml в объект C #.Я не получаю ошибок.Просто ничего не заканчивается в списке.
XML содержится в URL.Я использовал конвертер объектов xml в C # для создания объекта.
Вот код десериализации:
public static List<Models.Betway.EventList> GetEvents()
{
string res = "";
Uri myURI = new Uri("http://feeds.betway.com/events?key=CEBA7C11&keywords=horse-racing,uk-and-ireland&and=true");
WebRequest webRequest = WebRequest.Create(myURI);
webRequest.Timeout = 2000;
using (WebResponse webResponse = webRequest.GetResponse())
{
using (Stream stream = webResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
res = reader.ReadToEnd();
}
}
XmlSerializer serializer = new XmlSerializer(typeof(List<Models.Betway.EventList>), new XmlRootAttribute("EventList"));
StringReader stringReader = new StringReader(res);
List<Models.Betway.EventList> list = (List<Models.Betway.EventList>)serializer.Deserialize(stringReader);
return list;
}
Вот моя модель класса объектов, которую я создал с помощью онлайн-конвертера:
using System;
using System.Xml.Serialization;
using System.Collections.Generic;
namespace tf.PriceService.Core.Models.Betway
{
[XmlRoot(ElementName = "Keyword")]
public class Keyword
{
[XmlAttribute(AttributeName = "type_cname")]
public string Type_cname { get; set; }
[XmlAttribute(AttributeName = "cname")]
public string Cname { get; set; }
[XmlText]
public string Text { get; set; }
}
[XmlRoot(ElementName = "Keywords")]
public class Keywords
{
[XmlElement(ElementName = "Keyword")]
public List<Keyword> Keyword { get; set; }
}
[XmlRoot(ElementName = "Outcome")]
public class Outcome
{
[XmlElement(ElementName = "Name")]
public string Name { get; set; }
[XmlElement(ElementName = "Quicklink")]
public string Quicklink { get; set; }
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[XmlAttribute(AttributeName = "index")]
public string Index { get; set; }
[XmlAttribute(AttributeName = "type_cname")]
public string Type_cname { get; set; }
[XmlAttribute(AttributeName = "cname")]
public string Cname { get; set; }
[XmlAttribute(AttributeName = "starting_price")]
public string Starting_price { get; set; }
[XmlAttribute(AttributeName = "price_num")]
public string Price_num { get; set; }
[XmlAttribute(AttributeName = "price_den")]
public string Price_den { get; set; }
[XmlAttribute(AttributeName = "price_dec")]
public string Price_dec { get; set; }
}
[XmlRoot(ElementName = "Market")]
public class Market
{
[XmlElement(ElementName = "Name")]
public string Name { get; set; }
[XmlElement(ElementName = "Outcome")]
public List<Outcome> Outcome { get; set; }
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[XmlAttribute(AttributeName = "index")]
public string Index { get; set; }
[XmlAttribute(AttributeName = "type_cname")]
public string Type_cname { get; set; }
[XmlAttribute(AttributeName = "cname")]
public string Cname { get; set; }
[XmlAttribute(AttributeName = "handicap")]
public string Handicap { get; set; }
[XmlAttribute(AttributeName = "situation_index")]
public string Situation_index { get; set; }
[XmlAttribute(AttributeName = "each_way_active")]
public string Each_way_active { get; set; }
[XmlAttribute(AttributeName = "each_way_fraction_den")]
public string Each_way_fraction_den { get; set; }
[XmlAttribute(AttributeName = "each_way_position")]
public string Each_way_position { get; set; }
[XmlAttribute(AttributeName = "tricast")]
public string Tricast { get; set; }
[XmlAttribute(AttributeName = "forecast")]
public string Forecast { get; set; }
[XmlAttribute(AttributeName = "interval_from")]
public string Interval_from { get; set; }
[XmlAttribute(AttributeName = "interval_to")]
public string Interval_to { get; set; }
}
[XmlRoot(ElementName = "Event")]
public class Event
{
[XmlElement(ElementName = "Name")]
public string Name { get; set; }
[XmlElement(ElementName = "Quicklink")]
public string Quicklink { get; set; }
[XmlElement(ElementName = "Keywords")]
public Keywords Keywords { get; set; }
[XmlElement(ElementName = "Market")]
public List<Market> Market { get; set; }
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[XmlAttribute(AttributeName = "cname")]
public string Cname { get; set; }
[XmlAttribute(AttributeName = "start_at")]
public string Start_at { get; set; }
[XmlAttribute(AttributeName = "home_team_cname")]
public string Home_team_cname { get; set; }
[XmlAttribute(AttributeName = "away_team_cname")]
public string Away_team_cname { get; set; }
[XmlAttribute(AttributeName = "started")]
public string Started { get; set; }
}
[XmlRoot(ElementName = "EventList")]
public class EventList
{
[XmlElement(ElementName = "Event")]
public List<Event> Event { get; set; }
}
}
Как видите, я объявляю EventList в качестве корня.Но это все еще не десериализация.