在我所见过的所有使用XmlSerializer列表或数组的情况下的所有示例中,您都有类似以下的容器元素:
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>
如您所见,在内部 结果中 , type 元素重复,而没有 XmlSerializer 似乎期望的任何 type 元素(或至少我看到的所有文档和示例)。_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时, 结果 _List_都会得到零项。
您能建议我如何使它工作,因为我目前看不到它吗?
采用
[XmlElement("result")] public List<Result> Results { get; set; }