在没有XML容器元素的情况下反序列化成List

在所有使用XmlSerializer的例子中,每当发生一个列表或数组时,你都有一些类似的容器元素:

 <MyXml> <Things> <Thing>One</Thing> <Thing>Two</Thing> <Thing>Three</Thing> </Things> </MyXml> 

不过,我的XML没有类似于上面的东西的容器。 它只是开始重复元素。 (顺便说一下,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> 

正如你可以看到里面的结果type元素重复没有任何types的元素, XmlSerializer似乎期望(或至less所有的文件和我见过的例子)。 _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_中得到零个项目。

你能build议我怎样才能使这个工作,因为我目前没有看到它?

使用

 [XmlElement("result")] public List<Result> Results { get; set; }