У меня есть следующий Google геокодирование XML
<GeocodeResponse>
<status>OK</status>
<result>
<type>street_address</type>
<formatted_address>1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA</formatted_address>
<address_component>
<long_name>1600</long_name>
<short_name>1600</short_name>
<type>street_number</type>
</address_component>
<address_component>
<long_name>Amphitheatre Pkwy</long_name>
<short_name>Amphitheatre Pkwy</short_name>
<type>route</type>
</address_component>
....
<geometry>
<location>
<lat>37.4217550</lat>
<lng>-122.0846330</lng>
</location>
<location_type>ROOFTOP</location_type>
<viewport>
<southwest>
<lat>37.4188514</lat>
<lng>-122.0874526</lng>
</southwest>
<northeast>
<lat>37.4251466</lat>
<lng>-122.0811574</lng>
</northeast>
</viewport>
</geometry>
</result>
</GeocodeResponse>
И следующий объект
[DataContract(Namespace = "")]
public class GeocodeResponse
{
[DataMember(Name = "status", Order = 1)]
public string Status { get; set; }
[DataMember(Name = "result", Order = 2)]
public List<Result> Results { get; set; }
[DataContract(Name = "result", Namespace = "")]
public class Result
{
[DataMember(Name = "geometry")]
public CGeometry Geometry { get; set; }
[DataContract(Name = "geometry", Namespace = "")]
public class CGeometry
{
[DataMember(Name = "location")]
public CLocation Location { get; set; }
[DataContract(Name = "location", Namespace = "")]
public class CLocation
{
[DataMember(Name = "lat", Order = 1)]
public double Lat { get; set; }
[DataMember(Name = "lng", Order = 2)]
public double Lng { get; set; }
}
}
}
}
Я пытаюсь десериализовать, используя следующий метод
DataContractSerializer serializer = new DataContractSerializer(typeof(GeocodeResponse));
var response = (GeocodeResponse)serializer.ReadObject(request.GetResponse().GetResponseStream());
После десериализации результаты всегда пустые.Что я делаю неправильно?
ОБНОВЛЕНИЕ:
Изменен элемент результата.Получаем еще одну ошибку сейчас:
Произошла ошибка десериализации объекта типа GeocodeResponse.Данные на корневом уровне неверны.Строка 1, позиция 1.
...
[DataMember(Name = "result", Order = 2)]
public CResult Result { get; set; }
[DataContract]
public class CResult
{
...
Я могу десериализовать исходный объект, используя JSON, как показано ниже.
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(GeocodeResponse));