我正在尝试从Web服务中使用XML。我最初开始使用LINQ to XML,但在了解了序列化/反序列化后,我决定尝试反序列化XML。
虽然我还没有编写反序列化代码,但我已经意识到由于Web服务的工作原理,我不能总是知道为某些元素返回的实际类型。
例如,考虑这个XML(http://api.wunderground.com/api/d36f54198ebbb48c/conditions/q/England/London.xml)
<dewpoint_string>52 F (11 C)</dewpoint_string>
<dewpoint_f>52</dewpoint_f>
<dewpoint_c>11</dewpoint_c>
<heat_index_string>NA</heat_index_string>
<heat_index_f>NA</heat_index_f>
<heat_index_c>NA</heat_index_c>
现在,通常假设所有数据都可用,那么诸如“heat_index_f”之类的元素将是十进制/双精度。但是,当数据的某些部分不可用时,服务将在元素中具有字符串值“NA”。我反序列化为一个对象,它具有每个元素的属性。 EG:string HeatIndexString; double HeatIndexF;
显然,如果服务返回字符串NA,那么我将获得尝试将“NA”转换为double的运行时异常。
我该如何解决这个问题?是否有某种类型的属性我可以告诉解串器以某种方式使用这些“混合”类型?其他开发人员如何应对这种情况?