Во всех примерах, которые я видел при использовании XmlSerializer
, каждый раз, когда возникает список или массив, у вас есть какой-то элемент контейнера, подобный этому:
<MyXml>
<Things>
<Thing>One</Thing>
<Thing>Two</Thing>
<Thing>Three</Thing>
</Things>
</MyXml>
Однако, у меня нет XML-контейнера, похожего на Things выше. Это только начинает повторять элементы. (Кстати, XML на самом деле из Google Geocode API)
Итак, у меня есть XML, который выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
<status>OK</status>
<result>
<type>locality</type>
<type>political</type>
<formatted_address>Glasgow, City of Glasgow, UK</formatted_address>
<address_component>
<long_name>Glasgow</long_name>
<short_name>Glasgow</short_name>
<type>locality</type>
<type>political</type>
</address_component>
<address_component>
<long_name>East Dunbartonshire</long_name>
<short_name>East Dunbartonshire</short_name>
<type>administrative_area_level_3</type>
<type>political</type>
</address_component>
<!-- etc... -->
</result>
<result>
<!-- etc... -->
</result>
<result>
<!-- etc... -->
</result>
</GeocodeResponse>
Как вы можете видеть внутри результат элемент типа повторяется без каких-либо элементов types , которых XmlSerializer ожидает (или, по крайней мере, по крайней мере) все документы и примеры я видел). То же самое касается _адрес_компонента _.
Код, который у меня сейчас есть, выглядит примерно так:
[XmlRoot("GeocodeResponse")]
public class GeocodeResponse
{
public GeocodeResponse()
{
this.Results = new List<Result>();
}
[XmlElement("status")]
public string Status { get; set; }
[XmlArray("result")]
[XmlArrayItem("result", typeof(Result))]
public List<Result> Results { get; set; }
}
Каждый раз, когда я пытаюсь десериализовать XML, я получаю ноль элементов в моем Результате _List _.
Можете ли вы предложить, как я могу заставить это работать, поскольку я в настоящее время не вижу это?