Во всех примерах, которые я видел при использовании 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>
Как вы видите внутри результата, элемент типа повторяется без каких-либо элементов типа, которые, по-видимому, ожидает XmlSerializer (или, по крайней мере, все документы и примеры, которые я видел). То же самое касается _address_component _.
Код, который у меня сейчас выглядит, выглядит примерно так:
[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, я получаю нулевые элементы в моем Result _List _.
Можете ли вы предложить, как я могу заставить это работать, поскольку я в настоящее время не вижу его?