在我看到使用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 似乎没有任何类型元素(或至少我见过的所有文件和例子)。 _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 _中获得零项。
你能否建议我如何使用它,因为我目前还没有看到它?
答案 0 :(得分:89)
使用
[XmlElement("result")]
public List<Result> Results { get; set; }